在c#中获取对象的XML表示的最简单方法是什么? 我知道你可以使用XmlSerializer,但我想知道是否有更好的方法。
我可以以某种方式使用LINQ吗?
更新:最好的意思是我可以将它与不可变对象一起使用,而且我不需要创建一个没有参数的构造函数。
答案 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创建。
在此处下载链接: