XPath:选择文本节点

时间:2011-02-17 20:03:55

标签: xml xpath selection

拥有以下XML:

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

如何通过XPath选择第一个或第二个文本节点?

这样的事情:

/node/text()[2]

当然不起作用,因为它是节点内每个文本的合并结果。

2 个答案:

答案 0 :(得分:164)

  

拥有以下XML:

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

如何选择第一个或   通过XPath的第二个文本节点?

使用

/node/text()

这将选择XML文档的顶部元素(名为“node”)的所有文本节点子节点。

/node/text()[1]

这将选择XML文档的顶部元素(名为“node”)的第一个文本节点子节点。

/node/text()[2]

这将选择XML文档的顶部元素(名为“node”)的第二个文本节点子节点。

/node/text()[someInteger]

这将选择XML文档的顶部元素(名为“node”)的someInteger-th文本节点子节点。它等效于以下XPath表达式:

/node/text()[position() = someInteger]

答案 1 :(得分:26)

你的xpath应该可行。我已经在MarkLogic和Zorba Xquery / Xpath实现中测试了你的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