在集合对象上实现IXmlSerializable我有一个如下所示的xml文件:{得到;放;}列出列表项{get;放;}}classItem:IXmlSerializable{publicstringC{get;放;}公共字符串D{得到;放;}//实现了IXmlSerializeable读/写publicvoidReadXml(System.Xml.XmlReaderreader){this.C=reader.ReadElementString();this.D=reader.ReadElementString();}publicvoidWriteXml(System.Xml.XmlWriterwriter){writer.WriteElementString("C",this.C);writer.WriteElementString("D",this.D);我使用XmlSerializer将XmlObject序列化/反序列化为一个文件。问题是,当我在我的“子对象”项目上实现自定义IXmlSerializable函数时,在反序列化文件时,我总是只在XmlObject.listitems集合中获得一个项目(第一个)。如果我删除:IXmlSerializable一切都按预期工作。我做错了什么?编辑:我已经实现了IXmlSerializable.GetSchema,我需要在我的“子对象”上使用IXmlSerializable来进行一些自定义值转换。像这样修改您的代码:publicvoidReadXml(System.Xml.XmlReaderreader){reader.Read();this.C=reader.ReadElementString();this.D=reader.ReadElementString();读者.Read();}先跳过Item节点的开头,读取两个字符串,再读取结束节点,让reader在正确的位置。这将读取数组中的所有节点。您自己修改xml时需要小心:)您不需要使用IXmlSerializable。但是如果你想要你应该实现GetShema()方法。一些修改后的代码如下所示:[XmlRoot("XmlObject")]publicclassXmlObject{[XmlElement("A")]publicstringA{get;放;}[XmlElement("B")]publicstringB}[XmlElement("listitems")]publicListlistitems{get;放;}}publicclassItem:IXmlSerializable{[XmlElement("C")]publicstringC{get;放;}[XmlElement("D")]publicstringD{get;放;}#regionIXmlSerializableMemberspublicSystem.Xml.Schema.XmlSchemaGetSchema(){thrownewNotImplementedException();}publicvoidReadXml(System.Xml.XmlReaderreader){this.C=reader.ReadElementString();this.D=reader.ReadElementString();}publicvoidWriteXml(System.Xml.XmlWriterwriter){writer.WriteElementString("C",this.C);writer.WriteElementString("D",this.D);}#endregion}itemlist中的2个item的结果会是这样:以上是C#学习教程:在collection对象上实现IXmlSerializable分享所有内容,如果对大家有用需要了解一下C#学习教程,希望大家多多关注—valuevaluevalue0value0value1value1本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
