查看元素id';s

本文关键字:id 元素 | 更新日期: 2023-09-27 18:25:48

我在C#中使用LINQ to XML从下面的XML文件中的OrderProduct元素检索"id"时遇到问题。我尝试了一个更简单的XML文件,并且能够检索多个元素。

C#只检索第一个id=542,而不循环到id=543。我在这里做错了什么?

谢谢。

---[order.xml]-------------------

<?xml version="1.0" encoding="utf-16"?>
<OrderXml>
  <Order ... >
    .
    .
    .
    <OrderProducts>
      <OrderProduct id="542"></OrderProduct>
      <OrderProduct id="543"></OrderProduct>
    </OrderProducts>
  </Order>
</OrderXml>

---[C#]------------------------

IEnumerable<XElement> OrderXml = xelement.Elements ();
foreach (var order in OrderXml)
  Console.WriteLine ("id: {0}", order.Element ("OrderProducts").Element ("OrderProduct").Attribute ("id").Value);

查看元素id';s

var xdoc = XDocument.Load(path_to_xml);
var productIds = from p in xdoc.Descendants("OrderProduct")
                 select (int)p.Attribute("id");
foreach (var id in productIds)
     Console.WriteLine ("id: {0}", id);

诀窍是将指针设置在正确的位置:

查看Descendants

foreach (var order in OrderXml.Descendants("OrderProducts"))
{
    Console.WriteLine ("id: {0}", order.Element("OrderProduct").Attribute("id").Value);
}

怎么样。。。

var ids = from el in OrderXml.Descendants("OrderProduct") select el.Attribute("id").Value;
foreach (var id in ids)
{
    Console.WriteLine("id: {0}", id);
}