XML/JSON 处理中

XML/JSON processing

我正在为我的应用程序编写一组 REST API 到 XML 和 JSON 内容类型。在设计和实现这些 API 时,我想对 XML/JSON 处理库做出明智的选择。以下是 API 的各种非功能性要求:

  1. 性能 - APIs 处理大量数据(有效负载可以以兆字节为单位)。 API 输入大小小于 API 输出大小。
  2. 过滤功能 - API 的调用者应该能够指定过滤标准,根据该标准调整输出以优化带宽消耗。

作为我们研究和分析的一部分,我们确实查看了 DOM APIs 和 JAXB/Jackson APIs。考虑到上面列出的非功能性要求,请 advice/suggestion 选择正确的 API。

这是我对使用这些 API 编组和取消编组过程的理解。如有不妥请指正

尽管 JAXB 注释更简单、更方便,但就 marshalling/unmarshalling 而言,DOM API 的性能更好吗?

此外,对于何时选择什么 XML 处理库,是否有任何指导方针? 对于多种内容类型处理,选择不同的库是否更好。例如。 JSON 的 Jackson 和 XML 的 JAXB(纯粹为了性能)。

对于 JSON 内容类型,将 JSON 转换为 DOM 对象是否有任何开销?

好的,有几点:

  1. 是的,在 JSON 和 DOM (XML) 之间转换不仅有显着的(而且通常是不必要的)开销。更糟糕的是,由于 JSON 和 XML 具有不同的信息模型,它通常是有损的。在我看来,应该避免这个选项(Jettison 等人)。
  2. 对于JAXB风格的操作,还有Jackson XML模块(https://github.com/FasterXML/jackson-dataformat-xml/),在同时支持XML和JSON[=24=的时候可以很方便]
  3. DOM 是较慢的方法,部分原因是两阶段处理,部分原因是内存使用比直接数据绑定高 3-5 倍(取决于数据类型)

基于 DOM 的方法的一些好处是:

  1. 它是 XML 特定的,因此如果特定 XML 方面或工具问题(使用 XPath,XML 架构),则可以访问 [=39= 的所有详细信息] 用法
  2. 由于 DOM 是无类型的、灵活的,它有时更适合动态和松散(...或者,糟糕...)结构化数据。

但我同意@lexicore 的观点,如果其他方法不起作用,DOM 应该是最后的选择。尤其是在处理大数据的时候。