Tener el siguiente XML:
<node>Text1<subnode/>text2</node>
¿Cómo selecciono el primer o el segundo nodo de texto a través de XPath?
Algo como esto:
/node/text()[2]
por supuesto no funciona porque es el resultado combinado de cada texto dentro del nodo.
/node/text()[2]
[...] no funciona porque es el resultado combinado de cada texto dentro del nodo. Eso está mal: significa el segundo nodo de texto hijo delnode
elemento raíz . El valor de cadena (concatenación de nodos de texto descendientes) seríastring(/node)
Respuestas:
Uso :
Esto selecciona todos los elementos secundarios de nodo de texto del elemento superior (denominado "nodo") del documento XML.
Esto selecciona el primer hijo de nodo de texto del elemento superior (denominado "nodo") del documento XML.
Esto selecciona el segundo hijo de nodo de texto del elemento superior (denominado "nodo") del documento XML.
Esto selecciona el elemento secundario del nodo de texto someInteger-th del elemento superior (denominado "nodo") del documento XML. Es equivalente a la siguiente expresión XPath:
fuente
/node[2]
no debe seleccionar ningún nodo si el documento XML de origen está bien formado. Por definición, en un documento XML bien formado solo hay un elemento superior (único) - también conocido comodocument-element
//*[text()]
todos modos./html/text()
No funciona./html/text()
no selecciona todos los nodos de texto en el documento, solo los nodos de texto que son hijos (no descendientes) delhtml
elemento superior . Probablemente quieras/html//text()
. Por lo general, se requiere cierto conocimiento y comprensión de XPath para construir expresiones XPath.tu xpath debería funcionar. He probado su xpath y el mío en la implementación de MarkLogic y Zorba Xquery / Xpath.
Ambos deberían funcionar.
fuente