XPath: выбрать текстовый узел - PullRequest
135 голосов
/ 17 февраля 2011

Имея следующий XML:

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

Как выбрать первый или второй текстовый узел через XPath?

Примерно так:

/node/text()[2]

конечно не работает, потому что это объединенный результат каждого текста внутри узла.

Ответы [ 2 ]

167 голосов
/ 18 февраля 2011

Имея следующий XML:

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

Как выбрать первый или второй текстовый узел через XPath?

Использовать :

/node/text()

Выбирает все дочерние элементы текстового узла верхнего элемента (называемого "узлом") документа XML.

/node/text()[1]

Выбирает первый дочерний элемент текстового узла.верхнего элемента (с именем «узел») документа XML.

/node/text()[2]

Выбирает второй дочерний элемент текстового узла верхнего элемента (с именем «узел») документа XML.

/node/text()[someInteger]

Выбирает someInteger-й дочерний элемент текстового узла верхнего элемента (с именем «узел») документа XML.Это эквивалентно следующему выражению XPath:

/node/text()[position() = someInteger]
26 голосов
/ 17 февраля 2011

ваш xpath должен работать.я проверил ваш xpath и мой в реализации MarkLogic и Zorba Xquery / Xpath.

Оба должны работать.

/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...