首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析windows phone 7中的Innerxml

解析windows phone 7中的Innerxml
EN

Stack Overflow用户
提问于 2013-02-07 20:07:56
回答 1查看 90关注 0票数 0

我有以下xml。

代码语言:javascript
复制
<?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(意思是性别),但是我不能解析内部元素。有没有人帮我解析内部元素,并根据性别在字典中积累条目。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-07 23:58:44

您可以使用LINQ查询分析xml。这有点棘手。

首先为您的XML生成一些类,如下所示

代码语言:javascript
复制
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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14750754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档