1

我在使用 LINQ to XML 从 C# 下面的 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);
4

3 回答 3

1
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);
于 2013-08-01T18:03:03.443 回答
0

怎么样...

var ids = from el in OrderXml.Descendants("OrderProduct") select el.Attribute("id").Value;

foreach (var id in ids)
{
    Console.WriteLine("id: {0}", id);
}
于 2013-08-01T18:29:24.810 回答
0

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

看着Descendants

foreach (var order in OrderXml.Descendants("OrderProducts"))
{
    Console.WriteLine ("id: {0}", order.Element("OrderProduct").Attribute("id").Value);
}
于 2013-08-01T18:01:04.133 回答