我有一个XML,我想加载到对象,操纵这些对象(设置值,读取值),然后保存这些XML.对我来说,在我创建的结构(xsd)中使用XML非常重要.
一种方法是编写我自己的序列化程序,但它是否内置支持它或C#中的开源我可以使用?
您可以使用xsd.exe从架构(xsd)生成可序列化的C#类:
xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir
如果架构具有依赖关系(包含/导入的架构),则它们必须全部包含在同一命令行中.
此代码(C#DotNet 1.0以后)可以很好地将大多数对象序列化为XML.(和返回)它不适用于包含ArrayLists的对象,如果可能的话,只能使用Arrays
using System; using System.IO; using System.Text; using System.Xml.Serialization; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; public static string Serialize(object objectToSerialize) { MemoryStream mem = new MemoryStream(); XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType()); ser.Serialize(mem, objectToSerialize); ASCIIEncoding ascii = new ASCIIEncoding(); return ascii.GetString(mem.ToArray()); } public static object Deserialize(Type typeToDeserialize, string xmlString) { byte[] bytes = Encoding.UTF8.GetBytes(xmlString); MemoryStream mem = new MemoryStream(bytes); XmlSerializer ser = new XmlSerializer(typeToDeserialize); return ser.Deserialize(mem); }
如果您使用.net 3.5,LINQ to XML非常强大,LINQ to XSD也可能对您有用!