【发布时间】:2012-03-15 23:51:35
【问题描述】:
给出这个 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>
我在 item-info 节点中的属性之后,特别是每个属性的最后一个值。更重要的是,我只需要 6 个属性中的 4 个。我整天都在敲这个。我把那个 xml 放到一个 XElement 中,我们称之为信息。当我写这个时:
var query = from i in info.Elements("item-info")
from j in i.Elements()
select j;
此时我可以看到所有六个 item-name... 行。目的是我想获取这些值并将它们放入一个类对象中。粗略的伪编码期望的结果是......
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" />元素没有名字,只有一堆属性!? -
是的,没错。我应该提到的。这是一个传递的 xml sn-p。最终它最终与其他 sn-ps 合并。我只是在劫持 sn-p 以获得所需的东西。