在XmlSerializer生成的对象中维护xml层次结构(即父子)信息

一段时间以来,我一直试图解决以下问题,我开始没有想法:

我使用xsd.exe工具从xsd架构生成了一组C#类,并且反序列化xml文件工作正常。 问题是除了使用自动生成的类的方便性和安全性之外,我还需要有关xml层次结构的信息,即我需要在反序列化期间创建的对象之间建立父子关系。 请注意,我想避免保留单独的xml层次结构(如DOM树),而是让生成的对象跟踪其父项和子项。

我已经设法通过以下方式在Java中使用JAXB:

  1. 为所有反序列化对象定义公共基类。 此基类包含子列表和对父对象的引用(如果有)。

  2. 使用Unmarshaller.Listenerfunction,该function在已完成的对象反序列化上提供回调。 此回调提供对最近反序列化对象的父级的引用,这使得建立父子关系变得微不足道。

我将如何在C#中执行此操作? 我看过MSDN文档,并进行了大量的谷歌搜索,但未能找到任何有用的信息。

前段时间我写了一篇关于这个确切问题的文章,也许它可以帮到你。

http://www.thomaslevesque.com/2009/06/12/c-parentchild-relationship-and-xml-serialization/

XmlSerializer应该维护简单的对象层次结构以进行序列化和反序列化。 诸如包含多种类型对象的数组或列表之类的复杂事物有点过时。 。 。 但可能。