我有这样的XML:
<SHOP>
<SHOPITEM>
<PRODUCTNAME>X</PRODUCTNAME>
<IMGURL_ALTERNATIVE>http://...img1.jpg</IMGURL_ALTERNATIVE>
<IMGURL_ALTERNATIVE>http://...img2.jpg</IMGURL_ALTERNATIVE>
</SHOPITEM>
<SHOPITEM>
<PRODUCTNAME>Y</PRODUCTNAME>
<IMGURL_ALTERNATIVE>http://...img3.jpg</IMGURL_ALTERNATIVE>
<IMGURL_ALTERNATIVE>http://...img4.jpg</IMGURL_ALTERNATIVE>
<IMGURL_ALTERNATIVE>http://...img5.jpg</IMGURL_ALTERNATIVE>
</SHOPITEM>
</SHOP>
这样的课程:
public class Item
{
public string Name { get; set; }
public List<string> Images { get; set; }
}
我需要将该XML解析为Item
的列表,并将每个PRODUCTNAME
值保存到属性Name,并将IMGURL_ALTERNATIVE
个元素的所有值保存到List属性Images
我试过这样的事但没有成功。
var items = from item in xmlDocument.Descendants("SHOPITEM")
select new Item
{
Name = item.Element("PRODUCTNAME").Value,
ImagesUrl =
{
(from img in item.Descendants("IMGURL_ALTERNATIVE")
select item.Value.ToString()).ToList(),
}
};
答案 0 :(得分:4)
使用此代码:
XDocument xDoc = XDocument.Load(path);
List<Item> itemList = (from e in xDoc.Descendants("SHOPITEM")
select new Item {
Name = e.Element("PRODUCTNAME").Value,
Images = (from i in e.Elements("IMGURL_ALTERNATIVE")
select i.Value).ToList()
}).ToList();
答案 1 :(得分:1)
如何使用Linq to Xml
var items = XDocument.Load(fname)
.Descendants("SHOPITEM")
.Select(s => new Item
{
Name = (string)s.Element("PRODUCTNAME"),
Images = s.Elements("IMGURL_ALTERNATIVE").Select(x => (string)x).ToList()
});