Я новичок в LINQ to XML и мне нужна помощь в отображении иерархии XML в мой объект домена. Вот источник XML:
<?xml version="1.0" encoding="UTF-8"?>
<Listings>
<Region>United States</Region>
<Listing>
<CatID>ELE</CatID>
<CatDesc>Electronics</CatDesc>
<ItemID>ELE_LCDTV</ItemID>
<ItemDesc>LCD TV BLU RAY</ItemDesc>
<TotalPrice>1500</TotalPrice>
</Listing>
<Listing>
<CatID>COMP</CatID>
<CatDesc>Computer</CatDesc>
<ItemID>COMP_LAPTOP</ItemID>
<ItemDesc>Laptop HP</ItemDesc>
<TotalPrice>1200</TotalPrice>
</Listing>
<Listing>
<CatID>MISC</CatID>
<CatDesc>Miscellaneous</CatDesc>
<ItemID>MISC_WII</ItemID>
<ItemDesc>Wii</ItemDesc>
<TotalPrice>350</TotalPrice>
</Listing>
<Listing>
<CatID>COMP</CatID>
<CatDesc>Computer</CatDesc>
<ItemID>COMP_HD</ItemID>
<ItemDesc>Hard Disk</ItemDesc>
<TotalPrice>300</TotalPrice>
</Listing>
<Listing>
<CatID>ELE</CatID>
<CatDesc>Electronics</CatDesc>
<ItemID>ELE_IPOD</ItemID>
<ItemDesc>iPod</ItemDesc>
<TotalPrice>225</TotalPrice>
</Listing>
<Listing>
<CatID>COMP</CatID>
<CatDesc>Computer</CatDesc>
<ItemID>COMP_WKEY</ItemID>
<ItemDesc>Wireless Keyboard</ItemDesc>
<TotalPrice>110</TotalPrice>
</Listing>
<Listing>
<CatID>MISC</CatID>
<CatDesc>Miscellaneous</CatDesc>
<ItemID>MISC_GAME</ItemID>
<ItemDesc>Games</ItemDesc>
<TotalPrice>50</TotalPrice>
</Listing>
</Listings>
Мне нужно заполнить следующие доменные объекты, использующие XML. В основном я должен выставить IEnumerable ListCategories ()
public class Category
{
public string ID { get; set; }
public string Description { get; set; }
public IList<Item> Items { get; set; }
}
public class Item
{
public string ID { get; set; }
public string Description { get; set; }
public decimal TotalPrice { get; set; }
}
Я понимаю, что сначала должен выполнить запрос orderby, чтобы отсортировать XML по CatID, а затем пройти через него, чтобы заполнить объекты моего домена.
XDocument xDoc = XDocument.Parse(XmlizedString);
var listing = from x in xDoc.Elements("Listings").Elements("Listing")
orderby (string)x.Element("CatID")
select x;
Выше запрос будет сортировать мой XML по CatID, но я не знаю, как действовать дальше ...
Буду очень признателен за ваши предложения / помощь в решении этой проблемы.