【问题标题】:How to loop though XElements and compare values using C#如何使用 C# 循环遍历元素并比较值
【发布时间】:2018-05-09 19:12:45
【问题描述】:

我有一个包含相似节点但值不同的 XElement。 像我的XElement 看起来像这样

<Information>
    <Emp>
        <A.EMPLID>1</A.EMPLID>
        <A.Phone>12##</A.Phone>
    </Emp>
    <Emp_Add>
        <B.ID>125</B.ID>
        <Add>XXXXXXX</Add>
    </Emp_Add>
    <Emp_Add>
        <B.ID>1256</B.ID>
        <Add>ZZZZZZ</Add>
    </Emp_Add>
</Information>

其实我需要遍历每个&lt;Emp_Add&gt; 节点——获取&lt;B.ID&gt; 的值 并将其与&lt;Emp&gt;.&lt;A.EMPLID&gt; 值进行比较。如果值相同,则使用 C# 代码显示消息 "Values matched" 否则显示消息 "Values does not match"

如何使用每个循环并比较此类XElement

【问题讨论】:

  • 如果我的回答对你有用,你能投票和/或评论吗?
  • 是时候阅读这本优秀的书籍Pro LINQ in C# 2010 来更熟悉 LINQ to XML。

标签: c# linq xelement


【解决方案1】:

我认为你需要这样的东西

见我的dotnetfiddle

var xml =
                "<Information>\r\n\t<Emp>\r\n\t\t<A.EMPLID>1</A.EMPLID>\r\n\t\t<A.Phone>12##</A.Phone>\r\n\t</Emp>\r\n\t<Emp_Add>\r\n\t\t<B.ID>125</B.ID>\r\n\t\t<Add>XXXXXXX</Add>\r\n\t</Emp_Add>\r\n\t<Emp_Add>\r\n\t\t<B.ID>1256</B.ID>\r\n\t\t<Add>ZZZZZZ</Add>\r\n\t</Emp_Add>\r\n</Information>";
        var xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xml);
        XDocument xmlObj = XDocument.Parse(xmlDoc.OuterXml);

        var emplId = xmlObj.Descendants().Descendants().Descendants().FirstOrDefault().Value;
        var empsAdd = xmlObj.Descendants().Descendants().Where(d => d.Name.LocalName == "Emp_Add");
        foreach (var emp in empsAdd)
        {
            var currentEmpIdNode = emp.Descendants().FirstOrDefault();
            Console.WriteLine(currentEmpIdNode != null && currentEmpIdNode.Value == emplId
                              ? "Values matched"
                              : "Values does not match");
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    相关资源
    最近更新 更多