9
votes

Sélectionnez le nœud suivant du nœud sélectionné dans PHP DOM?

Jusqu'à présent, je travaille sur un fichier HTML comme celui-ci xxx

Je souhaite sélectionner le nœud suivant de chaque "div" qui a son nom égal à "noeud" et j'essaie : xxx

mais je viens d'obtenir une erreur

Erreur fatale: appel à la méthode non définie DOMPEMENT :: Next_Sibling ()

Quelqu'un peut-il me dire ce qui ne va pas avec mon script s'il vous plaît?


0 commentaires

4 Réponses :


6
votes

Il n'y a pas de fonction appelée Next_Sibling () dans DOM. Vous devez utiliser la propriété Nextsibling définie dans Domnode (http://www.php.net/manual/fr/class.domnode.php).

foreach($els as $el)
{
    if($el->nextSibling) $j++;
}


0 commentaires

23
votes

L'erreur est assez claire: il n'y a pas de méthode domelement :: Next_Sibling () code>. Lire le Documentation pour Domelement code> et c'est le parent Classe DOMNODE code> . Vous pensez à la propriété em> DOMNODE :: Nextsibling code>.

Cependant, Nextsibling code> obtient le prochain noeud , pas le prochain élément em>. (Il n'y a pas de méthode ni de propriété DOM qui obtient l'élément suivant. Vous devez continuer à utiliser Nextsibling code> et vérifier NODETYPE code> jusqu'à ce que vous frappiez un autre élément.) Votre question dit que vous voulez le NOUVEAU NODE Mais je pense que vous pouvez réellement vouloir l'élément suivant (le

code>). Ceci est en fait assez facile à faire avec XPath, alors pourquoi ne faites-vous pas cela à la place? P>

pour l'obtenir immédiatement: p>

$nextelement = $xpath->query("following-sibling::*[1]", $currentdiv);


1 commentaires

C'est vrai, je veux obtenir l'élément suivant mais il suffit de manquer d'utiliser Nextsibling . Merci beaucoup pour votre belle explication que le script fonctionne maintenant bien comme prévu!



4
votes

Je ne sais pas php mais ce xpath les obtient: xxx


0 commentaires

2
votes

Ignorer des nœuds de texte (espérons-le, non testé) xxx

comme fonction xxx

utilisation xxx


0 commentaires