【问题标题】:Xml Serialization of custom List with nested List带有嵌套列表的自定义列表的 XML 序列化
【发布时间】:2014-10-28 15:55:00
【问题描述】:

我已在此处(和其他地方)查看此问题的任何答案,但没有找到任何答案。

我有一个派生自 List 的类,并包含另一个 List。当我序列化为 XML 时,内部集合的内容不包括在内。

这是一个非常简单的例子:

[Serializable()]
public class MyList<T> : List<T>
{
    protected List<T> _nestedList= new List<T>();

    public List<T> NestedList
    {
        get { return _nestedList; }
        set { _nestedList = value; }
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyList<int> ints = new MyList<int>();
        ints.Add(1);
        ints.Add(2);
        ints.NestedList.Add(3);
        ints.NestedList.Add(4);

        string xml;
        var xmlSerializer = new XmlSerializer(ints.GetType());
        using (var memoryStream3 = new MemoryStream())
        {
            xmlSerializer.Serialize(memoryStream3, ints);
            xml = Encoding.UTF8.GetString(memoryStream3.ToArray());
        }
    }
}

这是 xml 字符串:

<?xml version="1.0"?>
<ArrayOfInt xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <int>1</int>
  <int>2</int>
</ArrayOfInt>

请注意缺少 NestedList。

我在 NestedList 上尝试了各种属性,例如 XmlArray 或 XmlArrayItem,但这些都不起作用。

我也知道这不会正确反序列化。真实的模型比这更复杂;此集合位于另一个对象中,该对象也被标记为可序列化。

行为是相同的:外部列表序列化,但内部没有。我试图缩小问题的范围,所以我提出了这个较小的例子。

提前致谢!

编辑:看起来这是设计使然,并且 XmlSerializer 在序列化期间不包含集合的属性。所以我必须进行自定义序列化。

【问题讨论】:

标签: c# xml serialization


【解决方案1】:

只是为了将其标记为已回答,这是 XmlSerializer 中的设计。

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多