我想使用 xpath 查询在所有节点和所有属性中搜索特定文本。
示例:
<Employee>
<Id>1</Id>
<Info FirstName="Search" LastName="Smith">
<Address City="Search"/>
</Info>
</Employee>
我当前正在使用以下 xpath 查询:
var nodes = xmlConfig.SelectNodes("//*[contains(@*,'Search')]");
Xpath 查询应返回 Info 节点和 Address 节点。然而,它只返回一个节点。
最佳答案
假设您使用的是 XPath 1.0,您的 XPath 应该按照您的预期返回 Info
节点和 Address
节点。请参阅以下链接中的在线演示(单击“测试”按钮执行 XPath):
//*[contains(@*,'Search')]
在 XPath 2.0 中,上面的代码将抛出异常不允许将多个项目的序列作为 contains()
的第一个参数传递,而发生这种情况是因为元素可能有多个属性。对于 XPath 2.0 兼容表达式,您可以这样做:
//*[@*[contains(.,'Search')]]
输出:
<Info FirstName="Search" LastName="Smith">
<Address City="Search"/>
</Info>
<Address City="Search"/>
关于xml - Xpath 通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287556/