【问题标题】:Search XML file for nodes with specific attribute value in .NET 2在 .NET 2 中搜索具有特定属性值的节点的 XML 文件
【发布时间】:2013-01-24 12:09:11
【问题描述】:

我找到了使用 LINQ 搜索 XML 节点的答案,但我仅限于使用 .NET 2 的 C#。

我想打开一个 XML 文件(约 50Kb,所有简单文本)并搜索所有 <Tool> 具有特定值的属性 name 节点。

似乎XmlDocument.SelectNodes() 可能是我正在寻找的东西,但我不知道 XPath。这是正确的方法吗?如果是,代码会是什么样子?

【问题讨论】:

    标签: c# xpath .net-2.0


    【解决方案1】:

    您可以在 XmlDocument.SelectNodes 中使用 XPath 如:SelectNodes("//ElementName[@AttributeName='AttributeValue']")

    Xml 示例:

    <root>
        <element name="value1" />
        <element name="value2" />
        <element name="value1" />
    </root>
    

    C# 示例:

    XmlDocument xDoc = new XmlDocument();
    // Load Xml
    
    XmlNodeList nodes = xDoc.SelectNodes("//element[@name='value1']");
    // nodes.Count == 2
    

    Here 你可以找到一些额外的 XPath 示例

    【讨论】:

      【解决方案2】:

      认为您可以使用GetElementsByTagName 来做类似的事情(嗯,质朴,但您有这个想法)

      var myDocument = new XmlDocument();
      myDocument.Load(<pathToYourFile>);
      var nodes = myDocument.GetElementsByTagName("Tool");
      var resultNodes = new List<XmlNode>();
      foreach (XmlNode node in nodes)
      {
          if (node.Attributes != null && node.Attributes["name"] != null && node.Attributes["name"].Value == "asdf")
          resultNodes.Add(node);
      }
      

      【讨论】:

      • @John Hmmm,好吧,你可以在某些条件下在.Net2中使用它:见weblogs.asp.net/shahar/archive/2008/01/23/…
      • 这很好用,但 XPath 答案对我来说更优雅。
      • @John 哦,好吧,不需要任何理由;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多