Boucle sur DOMDocument

Je suis à la suite de la suggestion de cette question Robuste, Mature Analyseur HTML pour PHP, sur l'analyse du code html qui peut être incorrect avec DOMDocument.

Est-il un moyen facile pour faire une boucle sur le document analysé? Je voudrais donc faire une boucle sur le html comme ceci.

$html='<ul>
         <li>value1</li>
         <li>value1</li>
         <li>value3
            <p>subvalue</p>
         </li>
        </ul>
        <p>hello world</p>';

$doc = new DOMDocument();
$doc->loadHTML($html);
???
foreach (??? as $node)
{
  print $node->nodeName.':'.$node->nodeValue;
}

Et d'obtenir des résultats un peu comme cela.

 ul:
 li:value1
 li:value2
 li:value3
 p:subvalue
 p:hello world

À l'aide de $doc->childNodes par lui-même n'a pas vraiment faire ce que je veux. Depuis, il ne semble pas aller vers le bas pour baisser les branches de l'arbre. J'ai utilisé le code suggéré par halfdan et j'obtiens des résultats comme ça.

html:
html:value1
         value1
         value3
            subvalue

        hello world
  • Les objets DOM peut (mais pas toujours) ont une propriété appelée $childNodes que vous pouvez parcourir. Vous pouvez vérifier la présence ou non de cette propriété avec la hasChildNodes() la méthode.
InformationsquelleAutor Zoredache | 2010-05-26