Les enfants de l'élément de document, par le biais de php domdocument analyseur

Bien ici est un très commun d'analyse xml méthode, l'obtention de nœuds enfants, mais c'est tout simplement pas la façon dont il devrait pour moi...

Je NE peut pas obtenir un tableau de childNodes de mon élément racine ici, mais je peux l'obtenir à partir de n'importe quel autre nœud quand ils ont des enfants, ce n'est pas un problème. C'est chaque fois que je rencontre se childnodes partir de ce document, élément que je n'arrive pas à obtenir plus que juste le premier enfant.

J'ai besoin d'obtenir tous les le premier niveau des nœuds de l'élément de document..

$xdoc=createDOMDocument($file);
$all_children= $xdoc->documentElement->childNodes;
echo count($all_children);

function createDOMDocument($file){
    $xdoc = new DOMDocument();
    $xdoc->formatOutput = true;
    $xdoc->preserveWhiteSpace  = false;
    $xdoc->load($file);
    return $xdoc;
}

Mais, cela ne sera jamais sortie "1", il ne trouve pas de tous les nœuds, il s'arrête toujours au premier nœud lorsque j'essaie de sortie. Cela n'a aucun sens pour moi.

Le seul nœud, il trouve toujours au-dessous est:

<title>some title</title>

Si je supprimer ce nœud, il va trouver topicmeta et ainsi de suite, mais jamais chaque nœud dans un tableau qui est ce dont j'ai besoin.

Voici le XML:

<?xml version="1.0" encoding="UTF-8"?>
<map title="mytitle" xml:lang="en-us">
<title>some title</title>
<topicmeta>
<prodinfo>
  <prodname>a product</prodname>
      <vrmlist>
        <vrm version="8.5"/>
      </vrmlist>
  <platform/>
</prodinfo>
 </topicmeta>
  <topichead navtitle="cat1" id="topichead4f53aeb751c875.38130575">
<topichead navtitle="another topic"/>
</topichead>
  <topichead navtitle="cat2" id="topichead4f53aeb3596990.18552413"/>
  <topichead navtitle="cat3" id="topichead4f52fd157487f9.21599660"/>
</map>
  • XML n'est pas valide. Votre dernier topichead élément n'a pas de balise de fermeture. Aussi, que DOM bibliothèque utilisez-vous? createDOMDocument n'est pas une fonction valide. Vouliez-vous dire new DOMDocument() ici?
  • oh désolé, j'ai oublié, createDOMDocument appelle une fonction qui utilise des new DOMDocument ainsi que certains formatage
  • là je l'ai mis dans ma fonction en tant que bien
  • Comment obtenir les messages d'erreur utiles en PHP?
InformationsquelleAutor Kayla | 2012-03-04