从xml构造自定义对象图

时间:2018-02-28 11:04:13

标签: xml-parsing deserialization

我有一些xml文件符合我想要阅读的模式,但在阅读过程中,创建一个不一定与xml匹配的对象图。

我知道如果我只是想反序列化xml,那么有很多方法可以做到这一点。

我目前的尝试是使用Request.Form.Files并在每次看到新元素时触发事件。我面临的挑战是如何管理我目前在内存中对象图中的位置,以便进一步构建它。

如果我有:

XmlReader

当我到group3时,我怎么知道它的父母是<root> <group id="1"> <group id="2"> <item /> <item /> </group> <item /> <group id="3"> <item /> </group> <group id="4"> <item /> </group </root> 而不是root

理想情况下,我希望为每个group2创建team,为每个group创建member。在内存中,不是另一个序列化流。

似乎我需要某种通用或对象指针来跟踪我在对象图中的当前位置。

有没有人知道一种简单的方法来实现这一点,而不必构建一组知道如何以不同方式序列化和反序列化的类?

1 个答案:

答案 0 :(得分:0)

我想出来了。我有Stack<object>。每次我看到NodeType为StartElement时,我都会创建一个代表读取元素的类的实例并将其推送到堆栈中。当我看到NodeType为EndElement时,我将顶部对象从堆栈中弹出。任何时候我想处理对象图中的当前位置我只是Peek()堆栈上的内容。