首页 文章

XPath:选择文本节点

提问于
浏览
125

拥有以下XML:

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

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

像这样的东西:

/node/text()[2]

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

2 回答

  • 153

    拥有以下XML:<node> Text1 <subnode /> text2 </ node>
    如何通过XPath选择第一个或第二个文本节点?

    Use

    /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]
    
  • 24

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

相关问题