java - 用于最佳性能的 XML API

标签 java xml api jdom javolution

我有一个处理大量 XML 数据的应用程序。所以,我想问你,在 Java 中处理 XML 的最佳 API 是哪个。今天,我正在使用 W3,为了提高性能,我想迁移到某些 API。 我从 0 开始制作 XML,进行大量转换,导入数据库(mysqlmssql 等),从数据库导出到 html,修改那些 XML,等等。

JDOM 是最佳选择吗?你知道比 JDOM 更好的东西吗? 我(通过阅读页面)听说了 javolution。有人用吗?

您推荐我使用哪个 API?

最佳答案

如果您有大量数据,最主要的是避免一次将所有数据加载到内存中(因为它会使用大量内存,并且因为它可以防止重叠 IO 和处理)。可悲的是,我相信大多数 DOM 和类 DOM 库(如 DOM4J)都是这样做的,因此它们不太适合高效处理大量 XML。

相反,考虑使用流式 API,例如 SAX 或 StAX。根据我的经验,StAX 通常更易于使用。

还有其他 API 试图为您提供 DOM 的便利性和 SAX 的性能。 Javolution 可能是其中之一; VTD-XML是另一个。但老实说,我发现 StAX 非常容易使用 - 它基本上是一个奇特的流,所以您只需像从流中读取文本文件一样思考。

您可能会尝试将 JAXB 与 StAX 结合起来。这个想法是您使用 StAX 流式传输文件,然后使用 JAXB 解码其中的 block 。例如,如果您正在处理 Atom提要,您可以打开它,阅读标题,然后在一个循环中工作,将 entry 元素一次一个地解码为对象。这只有在您的格式由一系列独立元素组成时才有效,例如 Atom;它在像 XHTML 这样更丰富的东西上基本上没有用。您可以在 JAXB reference implementation 中看到这方面的示例和 a guy's blog post .

关于java - 用于最佳性能的 XML API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572597/

相关文章:

java - JODConverter错误android

xml - pl/sql : converting xmltype to node

java - 无法运行maven javafx应用程序并且pom文件中出现一些错误

xml - 当我序列化为字符串时,为什么 TXmlDocument 会省略编码?

azure - 如何在 Azure API 管理中打印 HTTP 请求 header 元素?

java - 无法使用 Spring 在 AppFog 上维持 session

java - 最佳 Java 实践 - 何时应在 Java 类中添加字段?

Java (android) 重用对象

c++ - C++ 中的 CreateObject 等价物

javascript - React js TypeError:this.state.list.map不是一个函数