2009-04-15 31 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的庫。