Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WindowsPhone7中解析Innerxml_C#_Windows Phone 7_Xml Parsing - Fatal编程技术网

C# 在WindowsPhone7中解析Innerxml

C# 在WindowsPhone7中解析Innerxml,c#,windows-phone-7,xml-parsing,C#,Windows Phone 7,Xml Parsing,我有以下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.

我有以下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>

QWZ5671
39.95
红色
暗红色的
红色
暗红色的
RRX9856
42.50
红色
海军
暗红色的
红色
海军
暗红色的
黑色
海军
黑色
暗红色的
黑色

我能够解析xml以获取catalog_项(表示性别),但在解析内部元素时无法实现。任何人都可以帮助我解析内部元素,并根据性别在字典中积累条目


提前感谢

您可以使用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; }
    }
公共类目录项
{
公共字符串项_num{get;set;}
公共双价{get;set;}
公共可观察集合大小{get;set;}
}
公营班级人数
{
公共字符串sizeDesc{get;set;}
公共ObservableCollection色样{get;set;}
}
公共类色样
{
公共字符串颜色{get;set;}
公共字符串图像{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
XElement-catalogElements=XElement.Parse(xmldata);
var结果=来自catalogElements.Elements(“产品”).Elements(“目录项目”)中的项目
选择新目录项()
{
item_num=item.Element(“item_number”).值,
price=Double.Parse(item.Element(“price”).Value),
大小=新的可观察集合(来自项目元素中的sz(“大小”)
选择新尺寸()
{
sizeDesc=sz.Attribute(“description”).Value,
colorswatches=新的可观察采集(来自sz.Elements中的cs(“颜色样本”)
选择新色样()
{
颜色=cs.值,
image=cs.属性(“image”).值
})
})
};
List catalogItems=result.ToList();
var items=catalogItems.First().size.First().sizeDesc//中等
var sjdl=catalogItems.First().size.First().colorsatches.First().color//红色