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.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |