【问题标题】:XPath for selecting a node under a specific node with zero or more nodes in betweenXPath 用于选择特定节点下的节点,其间有零个或多个节点
【发布时间】:2012-08-17 08:07:39
【问题描述】:

我的 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>
   

我需要选择 下 name="Iam" 下所有 name="wii" 的 节点。请注意, 可以是 的直接子代,也可以是 的孙子代(在 下)

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

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

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

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

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

我无法更改 XML 的格式。

【问题讨论】:

标签: c# xpath xml-parsing xpathnavigator


【解决方案1】:

这似乎对我有用:

        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);
        }

希望这是您正在寻找的。​​p>

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多