c# - C# XML 解析双标签以列出
问题描述
我有个问题。我有以下类将我的 XML 解析为:
[XmlRoot(ElementName = "picture")]
public class SetPicture
{
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "size")]
public string Size { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlElement(ElementName = "quantity")]
public string Quantity { get; set; }
[XmlElement(ElementName = "sizes")]
public List<Size> Sizes { get; set; }
[XmlIgnore]
public ImageSource imageSource { get; set; }
}
[XmlRoot(ElementName = "set")]
public class Set
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlElement(ElementName = "pictures")]
public List<SetPicture> Pictures { get; set; }
}
[XmlRoot(ElementName = "sets")]
public class Sets
{
[XmlElement(ElementName = "set")]
public List<Set> Set { get; set; }
}
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "sets")]
public Sets Sets { get; set; }
}
我收到以下 XML:
<data>
<sets>
<set>
<name>Set A</name>
<price>13.9</price>
<pictures>
<picture>
<id>4</id>
<name>Potret2.jpg</name>
<size>13 x 18 mat</size>
<price>6.95</price>
<quantity>2</quantity>
</picture>
<picture>
<id>5</id>
<name>Potret2Pasfoto.jpg</name>
<size>13 x 18 mat</size>
<price>6.95</price>
<quantity>1</quantity>
</picture>
</pictures>
</set>
</sets>
</data>
但是在将 XML 解析为 Class 之后,我得到一个空的List<SetPicture> Pictures
. 我想我知道出了什么问题,因为我将标签解析<pictures>
到列表中,但我需要将元素解析<picture>
到列表中。
我怎样才能解决这个问题?
解决方案
方法 1 - 更改Set
类。创建Pictures
具有列表的新类Picture
[XmlRoot(ElementName = "set")]
public class Set
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlElement(ElementName = "pictures")]
public Pictures Pictures { get; set; }
}
[XmlRoot(ElementName = "pictures")]
public class Pictures
{
[XmlElement(ElementName = "picture")]
public List<SetPicture> Picture { get; set; }
}
方法 2 - 更改XmlElement
为XmlArray
[XmlRoot(ElementName = "set")]
public class Set
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlArray("pictures")]
[XmlArrayItem("picture", typeof(SetPicture))]
public List<SetPicture> Pictures { get; set; }
}
推荐阅读
- emacs - 如何将以下 LaTeX 代码置于 org 模式?
- python - 如何在python等高线图中获取特定(x,y)的值
- c# - 为什么访问令牌中没有授权内容?
- r - 当一半数据为零时如何处理异常值?
- nginx-config - 带有 nginx 入口控制器 (nginxinc) 的 http 基本身份验证示例
- wordpress - 卡在 WordPress 网站上集成支付和重定向
- python - 如何将 pdf 页面从 gTTS 保存为 mp3
- heroku - 快速 CDN Heroku url 重定向
- http - 我不确定如何创建和传递上下文
- php - Laravel 从关系表中计算男性或女性的数量