查看元素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);
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);
}