加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 05:40:39 所属栏目:百科 来源:网络整理
导读:我有一个如下定义的类: [XmlRoot("ClassName")]public class ClassName_0{ //stuff...} 然后我创建一个ClassName_0列表,如下所示: var myListInstance= new ListClassName_0(); 这是我用来序列化的代码: var ser = new XmlSerializer(typeof(ListClassNam
我有一个如下定义的类:
[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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读