Xml XPath:选择文本节点

Xml XPath:选择文本节点,xml,xpath,selection,Xml,Xpath,Selection,具有以下XML: <node>Text1<subnode/>text2</node> <node>Text1<subnode/>text2</node> 当然不起作用,因为它是节点内每个文本的合并结果。您的xpath应该起作用。我已经在MarkLogic和Zorba Xquery/xpath实现中测试了您和我的xpath 两者都应该起作用 /node/child::text()[1] - should return T

具有以下XML:

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

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

您的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
具有以下XML:

<node>Text1<subnode/>text2</node>
<node>Text1<subnode/>text2</node> 
这将选择XML文档顶部元素(名为“节点”)的所有文本节点子级

/node/text()[1]
/node/text()[2]
/node/text()[someInteger]
这将选择XML文档顶部元素(名为“节点”)的第一个文本节点子节点

/node/text()[1]
/node/text()[2]
/node/text()[someInteger]
这将选择XML文档顶部元素(名为“节点”)的第二个文本节点子节点

/node/text()[1]
/node/text()[2]
/node/text()[someInteger]
这将选择XML文档顶部元素(名为“节点”)的第四个文本节点的子节点。它等效于以下XPath表达式:

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

您写道:
/node/text()[2]
[…]不起作用,因为节点内每个文本的合并结果都是错误的:它表示
节点
根元素的第二个文本节点子元素。字符串值(后代文本节点的连接)将是
string(/node)
您的意思是Xpath查询应该可以工作吗?嗯,我想我在别的地方还有一个问题谢谢这在PHP中有效吗?我试图只循环遍历文本节点,甚至是那些位于一组标记之间的节点。问题是将多个文本节点的内容粉碎在一起,而不考虑标记。无论如何都要使用
/*[text()]
/html/text()
不起作用。@a数百万,是的,AFAIK PHP有一个正确工作的XPath 1.0计算。请注意,
/html/text()
不会选择文档中的所有文本节点,只选择作为顶部
html
元素的子元素(不是子元素)的文本节点。您可能需要
/html//text()
。构造XPath表达式通常需要一些XPath知识和理解。谢谢。我刚刚想出了双斜杠的诀窍@阿隆吉利昂,不客气。您可以在本在线培训课程的模块2中学习XPath 1.0和2.0的基础知识: