區別

2013-01-03 32 views
0

昨天我已閱讀與SAX2 API類XMLReaderFactory和JAXP的API SAXParserFactory的相關文檔。它們都用於提供XMLReader類的實例的相同目的。然後,我瀏覽了各種材料,瞭解兩者之間的差異,並在特定情況下更有用。區別

我讀過的關於上述問題的大部分材料都說明了以下差異。

與輔助類XMLReaderFactory方法 createXMLReaderFactory(字符串的className)的問題是,工廠需要, 作爲參數,使用解析器類的String名稱(即 Apache類org.apache。 xerces.parsers.SAXParser,再次)。您可以通過將不同的解析器類作爲String傳入來更改解析器。 通過這種方法,如果更改解析器名稱,則不需要 變化的任何import語句,但你仍然需要重新編譯 類。這顯然不是最好的解決方案。在不重新編譯類的情況下,更容易更改解析器。

JAXP提供了更好的選擇:它可以讓你提供一個解析器作爲 Java系統屬性。當然,當你從Sun下載一個發行版時,你會得到一個使用Sun版本的Xerces的JAXP實現。 更改解析器 - 說,Oracle的解析器 - 需要你 更改類路徑設置,從一個解析器實現移動到另一個 ,但它不需要重新編譯代碼。這就是JAXP的全部內容 - 魔術 - 抽象 - 。誰能告訴我 在特定方法的特定情況下使用將 變得更加有用

但因爲如果我們使用方法createXMLReaderFactory(字符串的className)我不與上述差異同意並強似如果我們從屬性文件中讀取類的名稱並將其傳遞給方法,那麼我們不需要重新編譯類。

請不要讓我知道如果我在上面點或不正確的。

誰能告訴我SAX2 API類XMLReaderFactory JAXP的API的SAXParserFactory和區別?

+0

可能的重複:[!以前問(http://stackoverflow.com/questions/10583536/difference-saxparserfactory-xmlreaderfactory-which-one-to-選擇) – codeMan

+0

請閱讀http://docs.oracle.com/cd/B19306_01/appdev.102/b14252/adx_j_parser.htm –

+0

致CodeMan:如果此問題以前曾問過,可否向我提供它的鏈接。所以我可以從中得到我的理解。 – Beast

回答

0

我會說JAXP的SAXParserFactorySAXParser只是SAX API的XMLReaderFactoryXMLReader的便利外觀。 SAXParser在內部使用XMLReader進行實際解析。您可以解析XML不SAXParser的與XMLReader.parse(InputSource)但它更方便,SAXParser.parse(InputSource, DefaultHandler).