我想做阅读简单的 XML 文件。我发现 了在 Java 中做 Xml 的简单方法
还有几个可用的解析器只是想确保使用 XOM 解析器比 suns 解析器有什么优势
有什么建议么?
与标准的 W3C DOM 相比,XOM非常快。如果这是您的首要任务,那就没有比这更好的了。
但是,它仍然是一个 DOM 类型的 API,因此它的内存效率不高。它不能替代 SAX 或 STAX。
您可能想查看有关最佳 XML 库及其顶级 (XOM) 答案的问题;很多关于 XOM 优势的细节。(如果不清楚,请发表评论;Peter Štibraný 似乎对 XOM 了如指掌。)
如前所述,与标准 javax.xml 相比,XOM 在大多数任务中都非常快速和简单。例如,请参阅这篇关于在 Java 中读取 XML 文件的最简单方法的问题。我收集了一些很好的例子,这些例子让 XOM 看起来很不错(而 javax.xml 相当笨拙)。:-)
所以我个人在评估后喜欢 XOM(正如你在链接的帖子中看到的那样);对于任何新的 Java 项目,我很可能会选择 XOM 来处理 XML。我发现的唯一缺点是它不直接支持流式 XML(与我来自的 dom4j 不同),但通过简单的解决方法,它可以很好地流式传输。
您需要如何访问您的数据?
如果是一次性的,那么您不需要在内存中构建树。您可以使用SAX(快速,简单)或StAX(更快,不太简单)。
如果您需要将树保存在内存中进行导航,XOM或JDOM是不错的选择。 DOM是不得已的选择,无论是 1、2 还是 3 级,有或没有扩展。
Xerces 是 Java 包含的解析器(尽管您应该从 Apache 获取更新版本,而不是使用 Java 捆绑的版本,即使在 6.0 中也是如此),它也有一个名为XNI的流式原生接口。
如果您想将其他预制部件连接到链中,通常 SAX 或 StAX 效果很好,因为它们可能会在内存中构建自己的模型。例如,Saxon XSLT/XQuery 引擎与 DOM、SAX 或 StAX 一起工作,但在内部构建TinyTree(默认)或 DOM(可选)。 DataDirect XQuery也适用于 SAX、StAX 或 DOM,但非常喜欢 StAX。