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

时间:2012-05-30 09:36:39

标签: xml xpath

这个问题非常愚蠢,但我完全陷入困境。我想根据条件提取节点的子节点。 XML如下:

<a> 
 <aCode>aaa</aCode>
 <aValue>bbb</aValue>
</a>

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

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

/*[local-name()='a'][[local-name()='aCode']='aaa']

有谁知道我应该做什么?

3 个答案:

答案 0 :(得分:43)

你可能意味着

//*[local-name()='a'][*[local-name()='aCode']='aaa']

答案 1 :(得分:12)

试试这个

/a/aCode[text()='aaa']

//*[local-name() = 'aCode' and text() = 'aaa']

您在错误的地方使用了//

答案 2 :(得分:1)

这一项工作:

//*[local-name()='a'][*[local-name()='acode' and text()='a2']]

还有这一个:

//*[local-name()='a'][aCode[text()='a2']]