在JDK1.4中使用JAXP1.3
由于JDK1.5以上已經(jīng)自帶jaxp了,而jdk1.4以下版本需要自己添加jaxp庫文件。
?
1。下載
因為jwsdp-1.5中帶的jaxp是1.26版本,因此需要單獨重新下載jaxp
?
參考:
?
2.安裝:
JAXP_RI_20041025.class所在的目錄下,進入命令行,
運行:java -cp . JAXP_RI_20041025
然后屏幕上列出所有解壓出來的文件名字。
此時,在當前目錄下會有一個叫jaxp-1_3的目錄,里面有jaxp的jar文件和api文檔。
?
3.jaxp需要用到的jar為(都在jaxp-1_3目錄下):
dom.jar,jaxp-api.jar,sax.jar,xalan.jar,xercesImpl.jar
?
4.接下來就可以根據(jù)自己需要來使用jaxp1.3了
?
5.由于sun默認使用的解析器是經(jīng)過其包裝后的(基于Xerces version 2.6.0 和 XSLTC version 2.5.2),比如:
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(可查看javax.xml.parsers.SAXParserFactory 的源代碼),
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(可查看javax.xml.transform.TransformerFactory 的源代碼).
因此在需要使用其它解析器的時候,需要通過設(shè)置系統(tǒng)屬性值的方式,
或者在$java.home/lib/jaxp.properties進行配置($java.home為System.getProperty("java.home")所得到的路徑,具體可以查看javax.xml.parsers.FactoryFinder源代碼中的 static Object find(String factoryId, String fallbackClassName) 方法)來選擇具體的解析器實現(xiàn)。
jaxp.properties中支持以下屬性.
?
示例文件如下(實際就是jaxp的默認值):
javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
javax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl
?
假如需要使用apache的解析器,那么如下操作 。
(均為當前最新版本)
b.解壓獲得相應(yīng)的jar文件,放入classpath中。
3.配置jaxp.properties為:
javax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl
#也可以使用
#javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
javax.xml.datatype.DatatypeFactory=org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl
?
?
?
?
?
6.需要關(guān)于jaxp的調(diào)試信息,設(shè)置系統(tǒng)屬性jaxp.debug為1即可
?? System.setProperty("jaxp.debug","1");
或者運行時的命令為: java -Djaxp.debug=1 com.lizongbo.TestJAXP
?
?
?
幾篇非常好的資料:
?
JAXP 專述 Sun 的 Java API for XML 語法分析
JAXP 再述 Sun 的 Java API for XML Parsing,1.1 版?
JAXP 1.3 的新特性,第 1 部分
技術(shù)綜述,考察解析 API 的變化和新的驗證 API
 | JAXP 1.3 的新特性,第 2 部分 XPath 功能、支持名稱空間的工具和其他改進 |
JAXP 全面介紹,第 1 部分
XML 處理工具包使解析和驗證變得更容易
?
Factory模式和Abstract?Factory模式
?
Java中關(guān)于XML的API一瞥?
?
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=418679