【问题标题】:Convert object graph into tree将对象图转换为树
【发布时间】:2011-04-18 09:03:07
【问题描述】:

说,我有一个任意的 .NET 对象(好吧,我可以保证它已应用 [DataContract])并希望将其转换为树(例如 XML),对其所有字符串属性执行特殊处理。这看起来像是一个典型的序列化任务,但据我所知,没有一个 .NET 序列化程序可以让我控制属性内容处理(我尝试使用 DataContractSerializer/XmlSerializerXmlObjectSerializerWriteContext 是内部的,感谢它的设计者) .我不需要反序列化树回来,它只是为了视觉表示。

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

更新:最终得到了一个依赖反射的自定义递归函数。

【问题讨论】:

    标签: .net serialization xml-serialization


    【解决方案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

    【讨论】:

    • 我如何知道 xml 输出中的属性类型?如果我使用 NetDataContractSerializer,它会为原语输入类型信息吗?
    • 如果你使用 [DataContract]...否 :( 如果你使用 [Serializable],是的。
    • 查看其他建议...我想这可能更适合您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2017-05-20
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多