C#使用其中的对象列表序列化对象?示例publicclassMove{publicstringMoveName{get;设置;}公共列表oTags=新列表;}publicclassTag{publicstringTagName{get;set;}}如果我对move进行序列化,那么move中存储的所有标签也会被序列化吗?另外,如果它不序列化列表,我该怎么做?nameValue...是的,使用XmlSerializer它将序列化列表,只要T(或您的情况下的Tag)是可序列化的。移动move=newMove{MoveName="MyName"};move.oTags.Add(新标签{TagName="Value1"});move.oTags.Add(新标签{TagName="Value2"});move.oTags.Add(新标签{TagName="Value3"});StringBuilder输出=newStringBuilder();varwriter=newStringWriter(输出);XmlSerializer序列化器=newXmlSerializer(typeof(Move));serializer.Serialize(writer,move);Console.WriteLine(output.ToString());这将使用您当前的类结构输出:Value1Value2Value3MyName我会看看是否可以找到一种方法来匹配当前的XML架构,但您可以查看如何应用XmlAttributes并自己播放。编辑:如果您更改类声明以使用以下XmlAttributes,您将获得与示例中完全相同的XML架构:publicclassMove{[XmlElement(Order=1)]publicstringMoveName{get;设置;}[XmlElement(Order=2,ElementName="Tags")]publicListoTags=newList();}publicclassTag{[XmlText]publicstringTagName{get;set;}}哪个序列化将产生:MyNameValue1Value2Value3AreyousureyourIstheclassdeclarationcorrectinyourquestion?你刚刚声明了PublicMove,它应该是PublicclassMove试试这个代码XmlSerializerserializer=newXmlSerializer(typeof(YourClass));在你的情况下Movem=newMove();m.oTags.Add(newTag(){TagName="X"});m.oTags.Add(newTag(){TagName="XX"});XmlSerializerx=newXmlSerializer(typeof(Move));System.IO.Streams;varxmlwriter=System.Xml.XmlWriter.Create("C:\MXL.txt");x.Serialize(xmlwriter,m);YieldXXX默认情况下,否,因为列表中的项目可能不可序列化。如果是,那么您可能会发现以下页面有用:XMLSerializeGenericlistofserializableobjects详细了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
