拥有以下XML:
<node>Text1<subnode/>text2</node>
如何通过XPath选择第一个或第二个文本节点?
这样的事情:
/node/text()[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