我有一个XML文件,希望将其加载到对象中,操作这些对象(设置值、读取值),然后将这些XML文件保存回去。对我来说,将XML文件保持在我创建的结构(xsd)中非常重要。
一种方法是编写自己的序列化程序,但是否有C#内置支持或开源库可以使用呢?
我有一个XML文件,希望将其加载到对象中,操作这些对象(设置值、读取值),然后将这些XML文件保存回去。对我来说,将XML文件保持在我创建的结构(xsd)中非常重要。
一种方法是编写自己的序列化程序,但是否有C#内置支持或开源库可以使用呢?
xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir
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);
}
LINQ to XML 在使用 .net 3.5 时非常强大,如果您需要的话,LINQ to XSD 也可能对您有用!
http://msdn.microsoft.com/en-us/library/x6c1kb0s(VS.71).aspx
微软的xsd.exe有很多bug :| 试试这个开源的pearl http://xsd2code.codeplex.com/
我同意xsd确实很糟糕...但是他们又做了一个几乎没人知道的新版本,叫做xsd对象生成器。它是下一个版本,拥有更多的选项。它可以从XSD生成文件,非常好用。如果你有一个模式生成器像XML Spy,从你的xml创建一个xsd并使用这个工具。我已经使用这个工具创建了非常复杂的类。 然后为额外的属性/方法等创建部分类,当您更新模式时,只需重新生成类,任何编辑都会保存在您的部分类中。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7075
我敢打赌NetDataContractSerializer可以实现你想要的。