- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下形式的第 3 方 Web 服务返回的 XML:
<object>
<list name="subscriptions">
<object>
<string name="id">something</string>
<string name="title">something else</string>
<list name="categories" />
<number name="timestamp">1252707770116</number>
</object>
...more 'object'...
</list>
</object>
我在尝试将此数据反序列化为对象时遇到了很多问题。我无法使用 xsd.exe 生成架构,因此我手动生成了以下类来尝试拟合此数据:
[XmlRoot("object")]
public class ListOfSubscriptions
{
[XmlElement("list")]
public Subscription[] items;
}
[XmlRoot("object")]
public class Subscription
{
[XmlAttribute()]
public string id;
[XmlAttribute()]
public string title;
[XmlAttribute()]
public string[] categories;
[XmlAttribute()]
public string timestamp;
}
我正在尝试使用以下代码对其进行反序列化:
XmlSerializer s = new XmlSerializer(typeof(ListOfSubscriptions));
StreamReader r = new StreamReader("out.xml");
ListOfSubscriptions listSubscribe = (ListOfSubscriptions)s.Deserialize(r);
r.Close();
但是,当它完成时,listSubscribe
有一个成员,并且它的所有字段都为空。
我应该如何创建反序列化模板?
谢谢
更新 - 2010/01/28
感谢大家的评论,我已将我的类(class)修改为以下内容:
[XmlRoot("object")]
public class ListOfSubscriptions
{
[XmlElement("list")]
public SubscriptionList[] items;
}
[XmlRoot("list")]
public class SubscriptionList
{
[XmlElement("object")]
public Subscription[] items;
}
[XmlRoot("object")]
public class Subscription
{
[XmlElement("string")]
public string id;
[XmlElement("string")]
public string title;
[XmlElement("list")]
public string[] categories;
[XmlElement("number")]
public string timestamp;
}
如果我注释掉 Subscription 中的 [XmlElement(...)] 行,然后运行,我得到 listSubscribe
有一个 SubscriptionList
项目,它有正确的编号但是,订阅的所有元素都是空的。
如果我取消注释 XmlElement 行,我会收到反射(reflect)订阅的错误。我想它会变得困惑,因为有多个元素具有相同的名称。
如何将属性名称绑定(bind)到类成员?
最佳答案
您走在正确的轨道上。但是,您只定义了两个类。实际上要定义三个类:
另一个问题是您将订阅字段定义为属性。它们不是属性,而是元素。
关于c# - 将难以形成的 XML 反序列化为 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152182/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!