[英]Parsing Innerxml in windows phone 7
我有以下xml。
<?xml version="1.0" encoding="utf-8" ?>
<catalog>
<product description="Cardigan Sweater" product_image="cardigan.jpg">
<catalog_item gender="Men's">
<item_number>QWZ5671</item_number>
<price>39.95</price>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Large">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
</catalog_item>
<catalog_item gender="Women's">
<item_number>RRX9856</item_number>
<price>42.50</price>
<size description="Small">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
<size description="Large">
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
<size description="Extra Large">
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
</catalog_item>
我能夠解析XML以獲取catalog_item(表示性別),但在解析內部元素時卻無法實現。 任何人都可以幫助我解析內部元素,並根據性別在詞典中累積項目。
提前致謝
您可以使用LINQ查詢來解析xml。 這有點棘手。
首先像這樣為您的XML生成一些類
public class CatalogItem
{
public string item_num { get; set; }
public double price { get; set; }
public ObservableCollection<Size> sizes { get; set; }
}
public class Size
{
public string sizeDesc { get; set; }
public ObservableCollection<ColorSwatch> colorswatches { get; set; }
}
public class ColorSwatch
{
public string color { get; set; }
public string image { get; set; }
}
然后以以下方式解析您的XML
XElement catalogElements = XElement.Parse(xmldata);
var result = from item in catalogElements.Elements("product").Elements("catalog_item")
select new CatalogItem()
{
item_num = item.Element("item_number").Value,
price = Double.Parse(item.Element("price").Value),
sizes = new ObservableCollection<Size>(from sz in item.Elements("size")
select new Size()
{
sizeDesc = sz.Attribute("description").Value,
colorswatches = new ObservableCollection<ColorSwatch>(from cs in sz.Elements("color_swatch")
select new ColorSwatch()
{
color = cs.Value,
image = cs.Attribute("image").Value
})
})
};
List<CatalogItem> catalogItems = result.ToList();
var items = catalogItems.First().sizes.First().sizeDesc; //Medium
var sjdl = catalogItems.First().sizes.First().colorswatches.First().color; //Red
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.