我是使用XML和LINQ的新手,但我想要实现的是将此XML转换为类型' product-lineitem'有两个字段,一个用于净价,另一个用于产品ID。
所以在C#中这将是
List<ProductLineItem>
和类似的
public class ProductLineItem
{
public int ProductId {get;set;}
public decimal NetPrice {get;set;}
}
以下是XML文件的示例
<?xml version="1.0" encoding="UTF-8"?>
<orders xmlns="xyz">
<order order-no="00000605">
<order-date>2016-04-25T13:45:14.133Z</order-date>
<created-by>storefront</created-by>
<original-order-no>00000605</original-order-no>
<product-lineitems>
<product-lineitem>
<net-price>57.75</net-price>
<product-id>3210</product-id>
</product-lineitem>
<product-lineitem>
<net-price>55.00</net-price>
<product-id>5543</product-id>
</product-lineitem>
<product-lineitem>
<net-price>57.75</net-price>
<product-id>4987</product-id>
</product-lineitem>
</product-lineitems>
</order>
<order order-no="00000622">
...
</order>
<order order-no="00000666">
...
</order>
</orders>
理想情况下,我的最终结果是抓住每一个并创建上面定义的类的列表
<product-lineitem>
<net-price></gross-price>
<product-id></product-id>
</product-lineitem>
我正在努力弄清楚如何为此实现LINQ查询。我一直在玩XElement和一个StringBuilder,但想拥有一个对象列表而不是像我的代码那样手动构建一个字符串。
XElement root = XElement.Load(fileName);
StringBuilder result = new StringBuilder();
result.AppendLine(element.Attribute("order-no").Value);
foreach (XElement orderElement in root.Elements())
{
result.AppendLine(orderElement.Attribute("order-no").Value);
foreach(var item in orderElement.Element("product-lineitems").Elements())
{
var i = item.Element("product-id").Value;
}
}