XmlArrayItem反序列化为一个空列表
本文关键字:一个 列表 反序列化 XmlArrayItem | 更新日期: 2023-09-27 18:18:49
当我反序列化一个已协调为XML的List时,我得到空列表。
我从对象gjurisdiction开始并将其序列化为XML
<open511 xml:lang="en" xml:base="http://api.open511.info/" version="v0">
<jurisdictions>
<jurisdiction>
<id>my.id</id>
<languages>
<language>en</language>
</languages>
</jurisdiction>
</jurisdictions>
</open511>
这正是我想要的,但是当我试图在Languages中读取它时,它是空的。
public class Jurisdiction
{
[XmlElement("id")]
[JsonProperty("id")]
public string Id { get; set; }
[XmlArray("languages")]
[XmlArrayItem("language")]
[JsonProperty("languages")]
public List<String> Languages { get; set; }
}
[XmlRoot("open511")]
public class JurisdictionsBase : Open511Base
{
private List<Jurisdiction> _jurisdictions;
[XmlArray("jurisdictions")]
[XmlArrayItem("jurisdiction")]
[JsonProperty("jurisdiction")]
public List<Jurisdiction> Jurisdictions
{
get { return _jurisdictions ?? (_jurisdictions = new List<Jurisdiction>()); }
set { _jurisdictions = value; }
}
}
司法管辖区列表序列化完美,所有其他属性(为了清晰起见,我编辑了)序列化完美,但语言列表总是空的,为什么?
规范:http://open511.org/jurisdiction.html完整代码:https://github.com/doublej42/Open511DotNet/blob/master/Open511DotNet/Jurisdiction.cs
所以我没有给出足够的信息,没有阅读完整的源代码。我的问题是,在我的项目的其他地方,我使用了一些示例代码从http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.readxml(v=vs.110).aspx
public void ReadXml (XmlReader reader)
{
personName = reader.ReadString();
}
不要使用以上代码它不能正确地引导读者前进。正如这里提到的http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(System.Xml.XmlReader.ReadString);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5.1);k(DevLang-csharp)&rd=true
public void ReadXml(System.Xml.XmlReader reader)
{
_unit = reader.ReadElementContentAsString();
}