Xpath:选择基于条件的节点(使用local-name())

gis*_*sly 24 xml xpath

问题很愚蠢,但我完全陷入了困境.我想根据条件提取节点的子节点.XML如下:

<a> 
 <aCode>aaa</aCode>
 <aValue>bbb</aValue>
</a>
Run Code Online (Sandbox Code Playgroud)

表达很明显: //a[aCode='aaa']

但是,如果它是名称空间而我必须使用,我无法理解我应该如何改变它local-name().我在http://www.xmlme.com/XpathTool.aspx上测试了以下内容,它给出了一个解析错误:

/*[local-name()='a'][[local-name()='aCode']='aaa']
Run Code Online (Sandbox Code Playgroud)

有谁知道我应该怎么做?

cho*_*oba 46

你可能意味着

//*[local-name()='a'][*[local-name()='aCode']='aaa']
Run Code Online (Sandbox Code Playgroud)

  • `*`代表"任何元素". (2认同)

Cyl*_*ian 12

试试这个

/a/aCode[text()='aaa']
Run Code Online (Sandbox Code Playgroud)

要么

//*[local-name() = 'aCode' and text() = 'aaa']
Run Code Online (Sandbox Code Playgroud)

//在错误的地方使用过.


小智 5

这一项工作:

//*[local-name()='a'][*[local-name()='acode' and text()='a2']]
Run Code Online (Sandbox Code Playgroud)

还有这个:

//*[local-name()='a'][aCode[text()='a2']]
Run Code Online (Sandbox Code Playgroud)