c# - 用于选择特定节点下的节点(中间有零个或多个节点)的 XPath

标签 c# xpath xml-parsing xpathnavigator

我的 Xml 看起来像这样


      <root>
       <parent name="Iam">
          <child1 name="123">
              <toy name="wii">
              </toy>
          </child>
       </parent>
       <parent name="Iam">
          <toy name="wii">
          </toy>
       </parent>
       <parent name="Sam">
          <child1 name="999">
             <toy name="xbox">
             </toy>
           </child>
        </parent>
      </root>
   

我需要选择名称=“Iam”的 下名称=“wii”的所有 节点。请注意, 可以是 的直接子级,也可以是 的孙子级(在 下)

节点可以有 0 个或多个基数。

我尝试将这个 xpath /parent[@name='Iam']/*/toy[@name='wii'] 与 XPathNavigator 一起使用。

`XPathNodeIterator nodeIter = schemaNavigator.Select(schemaXPath, namespaceMgr);`

这显然是错误的,因为它失败了。

我需要 xpath 来选择 之间具有 0 或更多基数的所有节点。

我无法更改 XML 的格式。

最佳答案

这似乎对我有用:

        string schemaXPath = "//parent[@name='Iam']//toy[@name='wii']";
        XPathNavigator schemaNavigator  = oXmlDocument.CreateNavigator();
        XPathNodeIterator nodeIter = schemaNavigator.Select(schemaXPath, namespaceMgr);

        while (nodeIter.MoveNext() == true)
        {
            Console.WriteLine(nodeIter.Current.Name);
        }

希望这就是您正在寻找的内容。

干杯!

关于c# - 用于选择特定节点下的节点(中间有零个或多个节点)的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064010/

相关文章:

c# - C# 中字符串连接的内存分配

c# - IP 地址与机器名

html - XPath用于标签和下拉列表的组合

Android:执行后台操作的设计考虑

android - 在Android中解析本地gpx文件

node.js - AWS Lambda 函数中的 XML 解析

c# - 检查 2 种类型是否相同

c# - DI Singleton 实例与 Transient 实例

xml - 如何处理 sweet_xml 中的不区分大小写?

IE9 上的 JavaScript。 XMLDOM.selectSingleNode 给出未知方法 -->concat