问题描述
比如有个Cat类,实例化后,要以xml的格式序列化保存到本地的CatList.xml中,不能覆盖xml文件中原有的数据,只是作为一个新的节点加入。如果加入成功,要以反序列化的方式读取,怎么操作谢谢各位
解决方案
解决方案二:
Serialize对象后appendChild或者insertBefore到新的节点,再Deserialize对象读取。
解决方案三:
建议lz看看如何使用linq操作xml文件。这个不难。
解决方案四:
其实大家的想法我也知道,现实遇到的问题是,序列化和反序列化操作的是流,xml文件操作的是xml节点,我没找到哪个类或哪个方法是可以把这两种类型相互转化的。
解决方案五:
http://blog.csdn.net/jjx0224/article/details/6164128
解决方案六:
引用3楼u013554799的回复:
其实大家的想法我也知道,现实遇到的问题是,序列化和反序列化操作的是流,xml文件操作的是xml节点,我没找到哪个类或哪个方法是可以把这两种类型相互转化的。
序列化操作的是.net内部的对象(包括自定义对象),不是什么“流”。反序列化操作的是流,自然也就就可以方便地变通为string。xml文档处理操作的是xml节点,反操作是string,自然也就可以方便地变通为stream。
解决方案七:
linqtoxml
解决方案八:
XML的序列化和反序列化去MSDN上面就有示例
解决方案九:
路过,寻找中。。。。。。
解决方案十:
把类序列化成流并load到XmlDocument,然后加到另外一个XmlDocument再做保存……using(MemoryStreamms=newMemoryStream()){ClassAtryXml=newClassA{Key="A",Value="1"};XmlSerializerserializer=newXmlSerializer(typeof(ClassA));serializer.Serialize(ms,tryXml);varxmlClass=newXmlDocument();xmlClass.Load(ms);varxmlDocument=newXmlDocument();xmlDocument.Load("C:\temp\cat.xml");xmlDocument.DocumentElement.AppendChild(xmlClass);}
解决方案十一:
using(varms=newMemoryStream()){ClassAtryXml=newClassA{Key="A",Value="1"};XmlSerializerserializer=newXmlSerializer(typeof(ClassA));serializer.Serialize(ms,tryXml);varxmlClass=newXmlDocument();xmlClass.LoadXml(Encoding.UTF8.GetString(ms.ToArray()));varxmlDocument=newXmlDocument();xmlDocument.Load("C:\temp\TryXml.xml");XmlElementelement=xmlDocument.CreateElement("ClassA");element.InnerXml=xmlClass.DocumentElement.InnerXml;xmlDocument.SelectSingleNode("/configuration").AppendChild(element);xmlDocument.Save("C:\temp\TryXml.xml");}
解决方案十二:
读取就是反过来的过程,把读出来的InnerXml变成流,然后反序列化就好了