如何在没有ArrayOf包装器的情况下序列化c#中的List <t>?

时间:2018-01-11 17:23:47

标签: c# xmlserializer

我尝试使用以下命令序列化某些自定义类的List<T>

List<T> l = new List<T>();
...
XmlSerializer serializer = new XmlSerializer(l.GetType());
serializer.Serialize(writer, list);

它输出:

<ArrayOfT>
    <T>
        ...
    </T>
    <T>
        ...
    </T>
</ArrayOfT>

如何获得相同的内容,但没有ArrayOfT元素,所以它看起来像:

<T>
    ...
</T>
<T>
    ...
</T>

我试图这样做,因为它发生在包装类中,所以我的实际输出格式为:

<PropertyName>
    <ArrayOfT>
        <T>
            ...
        </T>
        <T>
            ...
        </T>
    </ArrayOfT>
</PropertyName>

ArrayOfT元素是多余的(逻辑上它与PropertyName的名称相同。)

1 个答案:

答案 0 :(得分:2)

你可以这样做:

XmlSerializer serializer = new XmlSerializer(l.GetType());
foreach (T item in list)
{
    serializer.Serialize(writer, item);
}

这样就可以序列化项目而不是外部对象。