将对象图转换为树

时间:2011-04-18 09:03:07

标签: .net serialization xml-serialization

说,我有一个任意的.NET对象(我可以保证它已经应用了[DataContract])并希望将其转换为树(例如,XML),对其所有字符串属性执行特殊处理。这看起来像是一个典型的序列化任务,但从我所学到的,没有.NET序列化器能让我控制属性内容处理(我试图使用DataContractSerializer / XmlSerializer,但XmlObjectSerializerWriteContext是内部的,多亏其设计师)。我不需要反向反序列化树,它只用于视觉表示。

除了使用反射进行手动序列化之外,我有没有其他选择(看起来处理集合的工作量太大,图表中的周期等等)?

更新:依靠反射结束自定义递归功能。

1 个答案:

答案 0 :(得分:1)

为什么不对XML输出执行字符串处理?使用XPATH获取所有字符串元素并执行操作。

您还可以实现XmlDictionaryWriter来执行字符串处理(您可以在内部包装XmlDictionaryWriter并在其上调用方法):

http://msdn.microsoft.com/en-us/library/system.xml.xmldictionarywriter.aspx

并使用DataContractSerializer来编写:

http://msdn.microsoft.com/en-us/library/ms195072.aspx