C# 在序列化/反序列化 XML 时更改列表中项目的元素名称

标签 c# xml xml-serialization xml-deserialization

我有一个定义如下的类:

[XmlRoot("ClassName")]
public class ClassName_0
{
    //stuff...
}

然后我创建一个 ClassName_0 列表,如下所示:

var myListInstance= new List<ClassName_0>();

这是我用来序列化的代码:

var ser = new XmlSerializer(typeof(List<ClassName_0>));
ser.Serialize(aWriterStream, myListInstance);

这是我用来反序列化的代码:

var ser = new XmlSerializer(typeof(List<ClassName_0>));
var wrapper = ser.Deserialize(new StringReader(xml));

如果我将它序列化为 xml,生成的 xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClassName_0 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClassName_0>
        <stuff></stuff>
    </ClassName_0>
    <ClassName_0>
        <stuff></stuff>
    </ClassName_0>
</ArrayOfClassName_0>

有没有一种方法可以序列化并能够将以下内容从 ClassName_0 列表反序列化?

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClassName xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClassName>
        <stuff></stuff>
    </ClassName>
    <ClassName>
        <stuff></stuff>
    </ClassName>
</ArrayOfClassName>

谢谢!

最佳答案

在您的示例中,ClassName 不是真正的根。 真正的根是你的列表。所以你必须将列表标记为根元素。 您的类只是一个 XmlElement。

关于C# 在序列化/反序列化 XML 时更改列表中项目的元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17741000/

相关文章:

c# - 在集合对象上实现 IXmlSerializable

c# - ?运营商VS??运营商使用

c# - Mvvmcross:处理全局应用程序事件

javascript - asp.net webservice jquery填充文本框

c# - 重新启动具有依赖服务的服务?

xml - 在 Perl 中从 XML 文件中提取一些元素值的最快方法是什么?

c# - 忽略要 (XML) 序列化的属性

c# - 从 OpenDocument ODT 文件获得的具有文档规范的字节数组或字符串加载 XML 的最佳方法是什么?

java - 在java中存储db2 xml的数据类型是什么?

c# - 如何将 xml 反序列化为对象数组?