【问题标题】:is it possible to use Event Sourcing with StAX XML event sequences是否可以将事件溯源与 StAX XML 事件序列一起使用
【发布时间】:2019-11-08 01:24:17
【问题描述】:

我有一个要解决的 XML 性能问题。

具体来说,我有相同的中小型 XML 文件,它被解析了数百次。

该功能绑定到 StAX XML 事件阅读器。它的输出不能被克隆或以其他方式复制,重现所需功能的唯一方法是再次在 XML 文档上运行此 XML 事件阅读器。

为了提高性能,我想急切地将 XML 读入 StAX 事件序列,然后重放该事件序列,而不是每次都重新解析 XML。

我认为问题在于实现:虽然这个想法原则上是合理的,但“事件”表示为针对具有较大 API 表面的 XMLStreamReader 的状态更改,其中很大一部分(但不是全部)与它的“当前”事件。

这样的系统是否已经存在?

如果我必须自己构建它,那么确保正确性的最佳方法是什么?

【问题讨论】:

    标签: java xml event-sourcing stax


    【解决方案1】:

    为了避免重复解析它,在内存中表示 XML 文档的常用方法是使用许多树模型中的一种(在我看来,JDOM2 和 XOM 是最好的,尽管很多人仍然使用可怕的旧 DOM 模型只是因为它被打包在 JDK 中)。所以我想我在问为什么这种“显而易见”的方法对你不起作用?

    在某些情况下(在 Saxon 内部)我使用可重放的事件流来代替,因为存储事件然后重放它们比构建树然后遍历树更有效。我不为此使用 StaX 事件,我使用我自己的类 net.sf.saxon.event.EventBuffer,它包含 net.sf.saxon.event.Event 对象的列表。也许这个事件模型比 StAX 模型更简单一些。 Saxon 没有任何逻辑可以将 EventBuffer 读取为 StAX 事件流,但添加起来很容易。是开源代码,看看能不能改。

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多