DOMDocument kullanmak için bir XML_Unserializer güvenen sınıf üstlenmeden

0 Cevap php

Ben bu xml dosyasını alır bir sınıf var:

<?xml version="1.0" encoding="utf-8" ?> 
    <pagedata> 
        <language>en-es</language> 
        <meta> 
            <![CDATA[
            <title>web page</title>
            ]]>
        </meta> 
        <pagecontent> 
            <class>test</class> 
                </pagecontent>
         </pagedata>

Ve bir diziye bu mutasyona XML_Unserializer kullanır. Bu olur:

Array
(
    [language] => en-US
    [meta] => <title></title> 
    [pagecontent] => Array
        (
            [class] => test
)

Ben o dizide anahtarların değerleri döndürür yöntemleri var. Ben dili istedim Yani örneğin ben $class->getData('language') veya $class->getData('pagecontent:class') kullanmak istiyorum.

Ben şimdi yerli XML uygulamaları güvenebilirsiniz böylece artık PHP4 destekler. Ben SimpleXML ve standart php DOM kütüphane ile hem çalıştım. Daha güçlü ve esnek beri ben sonuncusunu tercih ve SimpleXML bazı uyarılar geliyor.

Ben unserializer sınıf kullanmış beri, neredeyse tüm yöntemleri gibi foreach olarak işlev yöntemleri ile etkileşim. Bunun hepsi benim yöntemleri üstlenmeden beni kurtarmak olacak bir dizi, tutmak değer olup olmadığını merak ediyorum? Buna ek olarak, ben o zaman gibi yöntemleri uygulamak zorunda çünkü, bazen bir öğenin tüm nodeValue kapmak için bir ağrı olduğunu biliyorum:

function innerHTML($node){
  $doc = new DOMDocument();
  foreach ($node->childNodes as $child)
    $doc->appendChild($doc->importNode($child, true));

  return $doc->saveHTML();
}

Ve o zaman bir DOMDocument oluşturur beri üzerinde bu metodu birçok kez kullanılarak verimsiz görünmektedir. Bitti ve tekrar aynı DOMDocument kullanır ve ekler fragmanlarını ama overkill görünüyor bu yüzden muhtemelen yöntemi refactor olabilir.

Ben bile standart DOM lib kullanmak gerekip gerekmediğini açısından, bu şekilde herhangi bir giriş takdir ediyorum eğer öyleyse, ben bütün yöntemleri DOM işlevlerini kullanabilir veya bir dizi oluşturmak ve oldukları gibi amacıyla, benim yöntemleri tutmak için refactor yeni böcek tanıtılması şansını düşürmek?

Teşekkürler.

0 Cevap