30

这个问题很愚蠢,但我完全被卡住了。我想根据条件提取节点的子节点。XML如下:

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

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

但是如果它与命名空间一起使用并且我必须使用local-name(). 我已经测试了以下内容,它给出了解析错误:

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

有人知道我应该做什么吗?

4

3 回答 3

51

你可能是说

//*[local-name()='a'][*[local-name()='aCode']='aaa']
于 2012-05-30T09:59:39.867 回答
16

尝试这个

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

或者

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

你用//错地方了。

于 2012-05-30T09:45:16.043 回答
5

这一项工作:

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

还有这个:

//*[local-name()='a'][aCode[text()='a2']]
于 2014-05-19T00:57:20.127 回答