我需要将一些xml模板应用到各种xml数据流(有时是文件),并且似乎有大量的xml库用于java - 足够快,很难快速确定哪些库是仍处于活跃状态,它们与其他同样活跃的选项有何不同,选择时应考虑哪些标准。
你用什么库来操作java中的xml,为什么它比替代品更好?
答案 0 :(得分:9)
saxon是xslt和xquery解析器 - http://saxon.sourceforge.net/。这是由一个已知的xslt专家(他在xslt spec committe上并且已经创作了书籍)构建的。有一个开源版本和一个商业版本。
它(xslt piece)不断改进 java中的其他xslt工具当然是XALAN。
xml - 有这么多。值得注意的(多年来经过充分测试)
1)jdk xml解析器 - dom,sax,stax
2)xerces:来自apache
3)XOM - 如果DOM不适合你
4)JDOM--早期流行的开源工具之一
5)JAXB - 现在内置于JDK 6中
6)woodstox - 漂亮的xml处理器(读/写) - http://woodstox.codehaus.org/
答案 1 :(得分:2)
您应该决定是否希望/能够将整个文档加载到内存中。如果它是一个大文档,您可能需要查看sax parser。这适用于大型文档。否则你可能想要查看一个dom解析器。
答案 2 :(得分:2)
没有人提到过JAXP,即XML处理的Java API。带有jdk的开箱即用,默认的xml库实现。
答案 3 :(得分:1)
Wrt“JAXP”:这只是一个用于创建DOM或SAX解析器实例的非常简单的包装器。 JDK捆绑的实现是Xerces。所以它本身不是另类;它只是构造前面提到的“JDK解析器”的标准API。 对于XSLT,Saxon严格优于Xalan;特征性的,速度的(2x)。 JAXB v2适合数据绑定,Stax(Woodstox)最适合流式传输。
答案 4 :(得分:0)
我使用Xerces进行XML解析(DOM)并对XSD进行验证。
对于XSLT处理,我使用了Xalan,但它是在3年前,所以很多东西必须有变化,在我的记忆中它很容易使用和强大(我使用几个Mo的输入XML文件)
答案 5 :(得分:0)
我一直在使用StAX pull解析器来实现自定义内存和性能高效的POJO-2-xml序列化解决方案,并对结果非常满意。它捆绑在JDK6中,因此您不需要任何其他依赖项来运行它。