LINQ Parsing XML
本文关键字:XML Parsing LINQ | 更新日期: 2023-09-27 18:28:09
给出这个xml结构:
<store-fax-info>
<store-info store-status="1" store-service-type="2">
<store-guid>blah-blah-blah-blah</store-guid>
<store-name>Avacados R Us</store-name>
<phone>555-555-5555</phone>
<fax>123-456-789</fax>
<attention>Rockhead Rumble</attention>
</store-info>
<selected-clerk>
<clerk-info guid="x">
<clerk name="full-name" label="Clerk Name" value="" />
</clerk-info>
<item-info>
<item-name="item-model" label="Item Model" value="Super Spuds" />
<item-name="item-model-num" label="Model Number value="55555" />
<item-name="family" label="Veggie Family" value="Tuber" />
<item-name="serial-number" label="Serial Number" value="ABC123456A" />
<item-name="date-checked" label="Last Date Checked" value="Mar 15 2012 11:00AM" />
<item-name="item-weight" label="Weight" value="20lbs />
<item-info>
</selected-clerk>
</store-fax-info>
我在寻找项目信息节点中的属性,特别是每个属性的最后一个值。关键是,我只需要6个属性中的4个。我一整天都在努力。我把xml放入XElement中,称之为info。当我写这篇文章时:
var query = from i in info.Elements("item-info")
from j in i.Elements()
select j;
在这一点上,我可以看到所有六个项目名称。。。线目的是我想获得这些值,并将它们放入一个类对象中。粗略地伪编码,期望的结果是…
select new MyObject()
{
Product = query.SuperSpuds,
Number = query.55555,
SerialNumber = query.ABC123456A,
CheckedDate = query.Mar 15 2012 11:00AM,
}
我似乎无法通过LINQ查询来完成我需要的操作。
首先,您的xml格式不正确。
之类的东西
<item-name="item-model" label="Item Model" value="Super Spuds" />
不允许。如果您想在元素中存储文本,请使用以下内容:
<item-name label="Item Model" value="Super Spuds">item-model</item-name>
但是,如果您将XML更改为有效的XML,以下代码可能会对您有所帮助:
var xElements = xElement.Descendants("item-name").Attributes("value").ToList();
var o = new MyObject()
{
Product = xElements[0].Value,
Number = xElements[1].Value,
SerialNumber = xElements[2].Value,
CheckedDate = xElements[3].Value
};