替代JAXB进行XML解析

时间:2014-07-19 08:08:43

标签: java xml-parsing jaxb stax

我目前正在使用JAXB来解析XML文档,但是我需要一个性能更好的XML处理器。

更好=更快,减少内存占用。

我必须处理数百万个单独的XML文档。

我正在使用websphere应用服务器v7和java 6.

我已经阅读过Stax是通过JAXP的方式,但后来我看到文章说JAXP已经过时了。

如果这是真的,那么我有效​​地处理数百万个XML文件(每个XML文档是5Kb - 10Kb),而不会导致我的应用程序服务器因内存问题而崩溃。

2 个答案:

答案 0 :(得分:1)

我认为首先应该跟踪内存问题。这些XML中有多少是同时在内存中维护的,是否可以同时在内存中保留一个(或至少一些相当少量的XML)? 在服务器上,Java进程通常需要至少1Gb的内存,因此不清楚XML解析是否会导致进程失败。

所以我真的相信你应该在这里使用一个分析器,然后得出结论应该改变XML解析器。

那里有很多解析器, 您可以尝试woodstox这是一个stax解析器。 另一种选择可以是xstream 如果您正在寻找类似于JAXB的东西,您可能想尝试Simple XML parser

底线我相信您应该首先了解问题的存在位置,如果您解决了问题,那么您可能根本不需要切换到另一个框架

答案 1 :(得分:-1)

您可以在Java中使用Groovy来读取xml。如果使用maven

,请在Java源目录中创建一个Groovy类
  

的src /主/常规

并使用Groovy XMLParser解析器解析或其他类来编写XML。使用Groovy可以更轻松地遍历xml。

当Groovy编译为Java类文件时,可以将Groovy类作为Java类中的Java类调用

通过maven使用

来做到这一点
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
    <execution>
        <goals>
            <goal>generateStubs</goal>
            <goal>compile</goal>
            <goal>generateTestStubs</goal>
            <goal>testCompile</goal>
        </goals>
    </execution>
</executions>
</plugin>