PHP Dom SimpleXML kullanılan taşıma kodu

3 Cevap php

Ben ona bir xml dosyasından yapılandırmayı çekme olanağı vermek için PDO genişleten bir sınıf var. Ne yazık ki bizim hosting sağlayıcısı yüzden mevcut Dom, kullanmak için kodumu refactor gerekir SimpleXML devre dışı bıraktı.

Ben aşağıdaki kodu kullanıyorum:

class xmlPDO extends PDO
{
    public function __construct($xml_uri){
        $xml = simplexml_load_file($xml_uri);
        $dsn_template = "%s:host=%s; dbname=%s";
        $dsn = sprintf($dsn_template, $xml->dsn->driver, $xml->dsn->host, $xml->dsn->dbname);
        parent::__construct($dsn, $xml->username, $xml->password);
    }
}

Aşağıdaki XML okumak için:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database [
<!ELEMENT database (name, description, dsn, username, password)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT description (#PCDATA)>
    <!ELEMENT dsn (driver, dbname, host)>
        <!ELEMENT driver (#PCDATA)>
        <!ELEMENT dbname (#PCDATA)>
        <!ELEMENT host (#PCDATA)>
    <!ELEMENT username (#PCDATA)>
    <!ELEMENT password (#PCDATA)>
]>

<database>
    <name>Test Database</name>
    <description>Localhost test database, use only for testing</description>
    <dsn>
        <driver>mysql</driver>
        <dbname>test</dbname>
        <host>localhost</host>
    </dsn>
    <username>user</username>
    <password>test</password>
</database>

Ben php.net belgelerine bakıyorum ve ben bu yapıyor olması gerekiyordu yaşıyorum nasıl anlamaya çalışıyorum gerçekten zor bir zaman yaşıyorum. Ben bu gibi veri çekerek herhangi bir açık kod örnekleri gibi görünüyor olamaz.

3 Cevap

Yoksa basit xml oldukça fazla davranır, ama basit xml devre dışı bırakıldığında çalışır simple xml for php 4 sınıfını kullanabilirsiniz.

Barındırma sağlayıcı SimpleXML devre dışı bırakmış veya thye sadece URL'lerin dosya yüklemek için SimpleXML yeteneğini devre dışı bıraktık? Daha sonra çok daha yaygın eski daha olduğunu ve eğer daha sonra DomDocument aynı kaderi olabilir.

Eğer çok derin kötü XML sizin indirmek için kıvırmak işlevleri kullanarak çalışırken, API belgelenen sağlam bir put olduğunu domBelgesi, dalmak ve sonra SimpleXMLElement nesnesi oluşturmak için simplexml_load_string kullanmadan önce.

Eğer DomDocument yol gitmek zorunda sonunda ise, size search around for xpath tutorials istiyorum. Bir DomDocument nesnenin dışarı bilgi almak için en basit yoludur.

Zaten bir DTD kurulum beri yapmak esiest şey eklemek olabilir ve çeşitli etiketleri IDENTITY nitelik ve daha sonra kullanmak istiyorsunuz getElementById

Her zaman her zaman kullanabileceğiniz nodelist koleksiyonları ile ilgili sakıncası yoksa getElementsByTagName.

Aksi takdirde DOM çapraz kastetmek fonksiyonları ve eleman özelliklerini (nextSibling, prevSibling, childNodes) kullanmak zorunda. Ayrıca kastetmek simplyfy olurdu XPath sorguları kullanabilirsiniz.