2009-04-15 26 views
15

我已经处理了Java中的一些XML API,但是我没有很好的理解Java中所有可用于处理XML的框架(例如JAXB,JAXP,Xerces,StAX ,Castor等)。任何人都可以突出显示最流行的Java XML API并快速描述它们的用途?我也会对现在使用哪些API感兴趣,哪些可能会被视为弃用。Java XML API

+0

你看过vtd-xml吗? – 2010-08-08 21:03:53

+0

大多数问题在以前的StackOverflow问题中都有答案: - [Java API for XML](http://stackoverflow.com/questions/678894/) - [Java中的XML序列化?](http:/ /tmpoverflow.com/questions/35785/) - [用于Java的最佳XML解析器](http://stackoverflow.com/questions/373833/) - [在Java中执行Xml的简单方法](http:// stackoverflow .com/questions/528664 /)这种搜索更简单易行Google Eddie 2009-04-15 05:25:25

回答

16
  • JAXP是一个“可插拔的API”,着有“参考实现”孙一组接口和抽象类,但它使用的工厂方法,让你换出一个不同的实现(例如,一个这在某些类型的用途中可能会更快),而不必更改任何代码,只需changing a system property即可。它包括DOM,SAX,StAX和XSLT。 Sun对DOM/SAX/StAX有很好的comparison page。我建议O'Reilly book on Java XML,你可以找到它使用在一个体面的价格,但只要确保你有最新的(第三版)。

  • JAXB是一种使用XML模式将Java类绑定到XML文件的方法。 (您可以使用模式自动生成Java类,也可以使用java类自动生成模式,我使用了前者,但不使用后者。)如果您的XML文件具有众所周知的架构,那么它会很有用,而您想要将XML文件中的数据视为它们是Java类中的对象。您根本不需要进行任何API调用,只需一两次即可将数据从Java编组为XML,或将数据从XML解组为Java。如果您的XML文件更自由,并且/或者您想使用XPATH来查找,您最好使用其中一个JAXP API。

  • Castor是JAXB的替代品;我没有使用它,但有一个comparison page on IBM's website

  • Xerces是Apache的XML处理软件包系列。它包含一个用于Java的应用程序,其中大部分可以通过JAXP用作Sun参考实现的替代实现。它还包括用于C++和Perl的库。