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

XmlArrayItem反序列化为一个空列表

所以我没有给出足够的信息,没有阅读完整的源代码。我的问题是,在我的项目的其他地方,我使用了一些示例代码从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();
}