2014-09-11 4 views
0

J'ai un fichier xml que je charge comme les suivantes:var_dump pour résultat inattendu d'impression DOMNodeList

//$file the file system path of the xml file 
function getTopicsList($file){ 
     $doc = new DOMDocument(); 
     $doc->load($file); 
     var_dump($doc->getElementsByTagName('topic')); 
     return $doc->getElementsByTagName('topic'); 
    } 

Le contenu du fichier XML chargé est quelque chose comme ce qui suit:

<?xml version="1.0" encoding="UTF-8"?> 
<topics> 
    <topic> 
     <title>Title1</title> 
     <keywords>"Some Keys"</keywords> 
    </topic> 
    <topic> 
     <title>The Title</title> 
     <keywords>Another Key</keywords> 
    </topic> 
    <topic> 
     <title>A Title</title> 
     <keywords>Key two</keywords> 
    </topic> 
</topics> 

Le var_dump() dans le code ci-dessus imprimer uniquement des informations limitées telles que:

object(DOMNodeList)#30 (1) { 
    ["length"]=> 
    int(3) 
} 

Je pensais qu'il shou ld imprime au moins les propriétés de cet objet, c'est-à-dire les balises xml et ses valeurs. J'ai essayé d'utiliser d'autres fonctions telles que print_r() et var_export() mais il n'y a pas de détails que je veux.

Répondre

0

Non, ceci est une liste de nœuds. Vous pouvez l'itérer avec foreach ou accéder aux nœuds à l'aide de la méthode item().

Les listes de nœuds sont utilisées à différents endroits, getElementsByTagName() en est une, une autre est la propriété $childNodes. Les expressions Xpath renvoient également des listes de nœuds. Sachez que les nœuds peuvent être non seulement des éléments mais également plusieurs types de nœuds. Comme du texte, une section de cdata ou un attribut.

Vous pouvez utiliser var_dump() pour vider un seul noeud. Cela fonctionne avec PHP> = 5.3.11 ou> = 5.4.1.

$dom = new DOMDocument(); 
$dom->loadXML('<foo/>'); 
var_dump($dom->documentElement); 

sortie:

object(DOMElement)#2 (18) { 
    ["schemaTypeInfo"]=> 
    NULL 
    ["tagName"]=> 
    string(3) "foo" 
    ["textContent"]=> 
    string(0) "" 
    ["baseURI"]=> 
    string(1) "/" 
    ["localName"]=> 
    string(3) "foo" 
    ["prefix"]=> 
    string(0) "" 
    ["ownerDocument"]=> 
    ...