2010-11-14 25 views
3

J'utilise la fonction php dom nodeValue pour extraire le texte du contenu. Mais il renvoie les valeurs de descendants aussi:PHP DOM: Obtenir Nodevalue sans nœuds descendants

<example> 
<inhalt>123<more>45</more></inhalt> 
</example> 

retour pour inhalt et 123 comme 12345 je préfère. Je sais que ce n'est pas le sens et pas très bien d'avoir du texte à l'intérieur inhalt mais comment je vérifie qu'il n'y a pas de texte dans inhalt comme hasNodeValue?

+0

quel est votre exigence est s'il y a un troisième numéro 45 ? –

+0

Gardez à l'esprit que le texte est également un noeud. – Phil

Répondre

3

Comme l'a mentionné Phil, le texte est également organisé en nœuds. Par conséquent, votre nœud inhalt a deux enfants: un nœud de texte ("123") et un nœud d'élément nommé plus, qui a également un nœud de texte ("45").

Si vous voulez juste savoir, s'il y a du texte avant l'élément plus, test s'il y a au moins un élément, puis test si le premier élément est un texte (qui devrait être DOMText pour autant que je me souviens).

Si vous voulez savoir, s'il y a au moins un élément "à la racine", passez en revue tous les enfants et faites les mêmes tests.

http://www.php.net/manual/en/class.domtext.php