xml - Xpath 通配符搜索

标签 xml xpath wildcard

我想使用 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')]

xpathtester xpath 1.0 demo

在 XPath 2.0 中,上面的代码将抛出异常不允许将多个项目的序列作为 contains() 的第一个参数传递,而发生这种情况是因为元素可能有多个属性。对于 XPath 2.0 兼容表达式,您可以这样做:

//*[@*[contains(.,'Search')]]

xpathtester xpath 2.0 demo

输出:

<Info FirstName="Search" LastName="Smith">
    <Address City="Search"/>
  </Info>

<Address City="Search"/>

关于xml - Xpath 通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287556/

相关文章:

python - 如何使用 python 查找 iframe 中按钮的 XPath?

permissions - 使用通配符为托管的 docker 注册表命名空间配置 Sonatype Nexus 3 权限

android - 如何制作一个 GridLayout,其中元素平均填充网格?

xml - 使用 node.js 验证 XML 语法/结构

xml - 在 Excel 上显示时,邮政编码会去掉前导零。导出到 excel 从 vb.net XML 到 XSLT 转换

sql - 如何在SQL中从xml节点提取数据

xml - xpath 选择所有以 foo 结尾的属性?

.htaccess - 共享主机帐户上的 SSL 握手错误

Makefiles : using `wildcard` vs. `find` 用于指定源文件

c++ - Pugixml:找不到文档元素