使用c#获取对象的xml表示的最佳方法?

时间:2010-11-02 19:50:17

标签: c# xml linq serialization

在c#中获取对象的XML表示的最简单方法是什么? 我知道你可以使用XmlSerializer,但我想知道是否有更好的方法。

我可以以某种方式使用LINQ吗?

更新:最好的意思是我可以将它与不可变对象一起使用,而且我不需要创建一个没有参数的构造函数。

2 个答案:

答案 0 :(得分:1)

这实际上取决于你对“更好”的意思。我个人喜欢使用LINQ to XML来自定义对象序列化。它使您可以完全控制序列化(允许您随着时间的推移轻松更改架构,可能保留当前代码版本无法理解的元素或属性),同时仍然在代码中紧凑。

我现在在一些地方使用过这个,并对结果感到满意。对于非常庞大和复杂的类型来说,这肯定会很痛苦 - 但是对于相当简单的数据结构来说,它很棒。

我个人并不十分喜欢依赖XmlSerializer和BinarySerializer之类的东西。他们倾向于给你不够控制来做你想做的一切,或者添加额外的要求,比如无参数构造函数。

答案 1 :(得分:0)

希望此示例有所帮助 - 使用LINQ覆盖XML序列化和反序列化:

http://thecodeslinger.wordpress.com/2007/12/17/custom-xml-serialization-with-linq/

还有LINQ到XSD(它在孵化中,不确定这对你是否重要 - 它对我不起......):

http://www.hanselman.com/blog/LINQToEverythingLINQToXSDAddsMoreLINQiness.aspx

Scott Hanselman发表此评论:

  

LINQ to XSD用。创建.NET类   比什么更好的保真度   使用(老化)XSD.exe创建。

在此处下载链接:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a45f58cd-fcfc-439e-b735-8182775560af&displaylang=en