在JDK1.4中使用JAXP1.3
在JDK1.4中使用JAXP1.3
由于JDK1.5以上已經自帶jaxp了,而jdk1.4以下版本需要自己添加jaxp庫文件。
1。下載
因為jwsdp-1.5中帶的jaxp是1.26版本,因此需要單獨重新下載jaxp
https://jaxp.dev.java.net/files/documents/913/7831/JAXP_RI_20041025.class
參考:
https://jaxp.dev.java.net
http://java.sun.com/xml/jaxp/index.jsp
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.接下來就可以根據自己需要來使用jaxp1.3了
5.由于sun默認使用的解析器是經過其包裝后的(基于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 的源代碼).
因此在需要使用其它解析器的時候,需要通過設置系統屬性值的方式,
或者在$java.home/lib/jaxp.properties進行配置($java.home為System.getProperty("java.home")所得到的路徑,具體可以查看javax.xml.parsers.FactoryFinder源代碼中的 static Object find(String factoryId, String fallbackClassName) 方法)來選擇具體的解析器實現。
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的解析器,那么如下操作 。
a.下載http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.6.2.zip
http://www.eu.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.zip
(均為當前最新版本)
b.解壓獲得相應的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.需要關于jaxp的調試信息,設置系統屬性jaxp.debug為1即可
System.setProperty("jaxp.debug","1");
或者運行時的命令為: java -Djaxp.debug=1 com.lizongbo.TestJAXP
幾篇非常好的資料:
JAXP 專述 Sun 的 Java API for XML 語法分析
http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html
JAXP 再述 Sun 的 Java API for XML Parsing,1.1 版
http://www-128.ibm.com/developerworks/cn/xml/jaxp1/index.html
JAXP 1.3 的新特性,第 1 部分
技術綜述,考察解析 API 的變化和新的驗證 API
http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13a.html
JAXP 1.3 的新特性,第 2 部分
XPath 功能、支持名稱空間的工具和其他改進
http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13b.html
JAXP 全面介紹,第 1 部分
XML 處理工具包使解析和驗證變得更容易
http://www-128.ibm.com/developerworks/cn/xml/x-jaxp/index.html
Factory模式和Abstract Factory模式
http://www.netbei.com/Article/jsp/jsp6/200409/2771.html
Java中關于XML的API一瞥
http://www.matrix.org.cn/article/1073.html
<轉載:
http://blog.donews.com/lizongbo/archive/2005/06/08/418679.aspx>