【问题标题】:Xmlelement condition to get value of another element using c#Xmlelement条件使用c#获取另一个元素的值
【发布时间】:2020-10-31 04:26:09
【问题描述】:

我有一个包含多条记录的 xmldoc。 例如:

<value>
<id>aaaaa</id>
<condition>true</condition>
</value>

<value>
<id>bbbb</id>
<condition>false</condition>
</value>

<value>
<id>ccccc</id>
<condition>true</condition>
</value>

现在使用 c# 和 xml linq
我需要检查条件元素值 如果是真的,那么我需要将它的 id 值传递给字符串

我使用的代码:

XmlDocument doc = new XmlDocument();
doc.Load(@"D:\Downloads\file.xml");

XmlElement xml= doc.DocumentElement;
XmlNodeList cond= xml.SelectNodes("/value/condition");
XmlNodeList id= xml.SelectNodes("/value/id");

foreach (XmlElement node in cond)
{
    var value = node.InnerText;

    if (value == "true")
    {
        var id_values = id.InnerText;
        Console.WriteLine(id_values);
        Console.ReadKey();
    }
}

在此代码中,我无法获取条件的 id 值,该值是 true。它返回所有 id,但我只需要与 true 条件相反的 id 值。

【问题讨论】:

    标签: c# xml linq c#-4.0 c#-3.0


    【解决方案1】:

    请查看linq to xml 的基础知识。它有许多api,方便导航。

    XElement.Load("file")
       .Elements(XName.Get("value"))
       .Where(x => x.Element("condition").Value.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase))
       .Select(x => x.Element("id").Value);
    

    【讨论】:

      【解决方案2】:

      您需要选择“值”节点并在循环中进行分析。例如让您开始:

      var s = @"<?xml version=""1.0"" encoding=""utf - 8""?>
      <values>
      <value>
      <id>aaaaa</id>
      <condition>true</condition>
      </value>
      
      <value>
      <id>bbbb</id>
      <condition>false</condition>
      </value>
      
      <value>
      <id>ccccc</id>
      <condition>true</condition>
      </value>
      </values>";
      
      XmlDocument doc = new XmlDocument();
      doc.LoadXml(s);
      
      var nodes = doc.SelectNodes("/values/value");
      foreach (XmlElement node in nodes)
      {
          if (node.SelectSingleNode("condition").InnerText == "true")
          {
              Console.WriteLine(node.SelectSingleNode("id").InnerText); // prints "aaaaa" and "ccccc"
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多