我有一个包含类似节点但值不同的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>
实际上我需要遍历每个<Emp_Add>
节点 - 获取<B.ID>
的值
并将其与<Emp>.<A.EMPLID>
值进行比较。如果值相同,则使用C#代码显示消息"Values matched"
else message "Values does not match"
。
如何使用每个循环并比较XElement
。
答案 0 :(得分:0)
我认为你需要这样的东西
查看我的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");
}