XPath: sélectionner le nœud de texte

ayant le XML suivant:

<node>Text1<subnode/>text2</node>

Comment choisir le premier ou le second noeud de texte via XPath?

quelque chose comme ça:

/node/text()[2]

bien sûr ne fonctionne pas parce que c'est le résultat fusionné de chaque texte à l'intérieur du noeud.

124
demandé sur bstpierre 2011-02-17 23:03:55

2 réponses

ayant le XML suivant:

<node>Text1<subnode/>text2</node> 

Comment choisir le premier ou le second noeud de texte via XPath?

Utiliser :

/node/text()

sélectionne tous les enfants de noeuds de texte de l'élément supérieur (appelé" noeud") du document XML.

/node/text()[1]

sélectionne le premier enfant texte-noeud de l'élément supérieur (nommé "noeud") de le document XML.

/node/text()[2]

sélectionne le deuxième enfant de noeud de texte de l'élément supérieur (appelé" noeud") du document XML.

/node/text()[someInteger]

sélectionne l'enfant texte-noeud de l'élément supérieur (appelé" noeud") du document XML. Elle est équivalente à L'expression suivante de XPath:

/node/text()[position() = someInteger]
150
répondu Dimitre Novatchev 2011-02-18 05:45:07

votre xpath devrait fonctionner . j'ai testé votre XPath et le mien dans les implémentations MarkLogic et Zorba Xquery/ Xpath.

les deux devraient fonctionner.

/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2


/node/text()[1] - should return Text1
/node/text()[2] - should return text2
24
répondu kadalamittai 2011-06-20 21:24:43