我目前正在使用JAXB来解析XML文档,但是我需要一个性能更好的XML处理器。
更好=更快,减少内存占用。
我必须处理数百万个单独的XML文档。
我正在使用websphere应用服务器v7和java 6.
我已经阅读过Stax是通过JAXP的方式,但后来我看到文章说JAXP已经过时了。
如果这是真的,那么我有效地处理数百万个XML文件(每个XML文档是5Kb - 10Kb),而不会导致我的应用程序服务器因内存问题而崩溃。
答案 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>