从xml构造自定义对象图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从xml构造自定义对象图相关的知识,希望对你有一定的参考价值。

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

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

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

如果我有:

<root>
  <group id="1">
    <group id="2">
      <item />
      <item />
    </group>
    <item />
  <group id="3">
    <item />
  </group>
  <group id="4">
    <item />
  </group
</root>

当我到group3时,我怎么知道它的父母是root而不是group2

理想情况下,我想为每个team创建类似group的东西,为每个member创建item。在内存中,不是另一个序列化流。

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

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

答案

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

以上是关于从xml构造自定义对象图的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 PyYAML 构造函数中处理递归?

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

VS中添加自定义代码片段——偷懒小技巧