我在使用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);
答案 0 :(得分: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);
答案 1 :(得分:0)
诀窍是将指针设置在正确的位置:
foreach (var order in OrderXml.Descendants("OrderProducts"))
{
Console.WriteLine ("id: {0}", order.Element("OrderProduct").Attribute("id").Value);
}
答案 2 :(得分:0)
怎么样......
var ids = from el in OrderXml.Descendants("OrderProduct") select el.Attribute("id").Value;
foreach (var id in ids)
{
Console.WriteLine("id: {0}", id);
}