当前位置:  开发笔记 > 编程语言 > 正文

如何将XML映射到C#对象

如何解决《如何将XML映射到C#对象》经验,为你挑选了3个好方法。

我有一个XML,我想加载到对象,操纵这些对象(设置值,读取值),然后保存这些XML.对我来说,在我创建的结构(xsd)中使用XML非常重要.

一种方法是编写我自己的序列化程序,但它是否内置支持它或C#中的开源我可以使用?



1> ckarras..:

您可以使用xsd.exe从架构(xsd)生成可序列化的C#类:

xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir

如果架构具有依赖关系(包含/导入的架构),则它们必须全部包含在同一命令行中.


[+1]值得注意的是,在使用XSD时,您还应该使用/ c生成类或/ d生成DataSet派生类.否则,您将收到以下错误消息"错误:只能生成类或数据集之一.".

2> 小智..:

此代码(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);
}



3> ljs..:

如果您使用.net 3.5,LINQ to XML非常强大,LINQ to XSD也可能对您有用!


这是LINQ to XSD的官方页面:http://linqtoxsd.codeplex.com/
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有