濮阳杆衣贸易有限公司

主頁 > 知識庫 > Java中關于XML的API

Java中關于XML的API

熱門標簽:怎樣把地圖標注出來 漯河辦理400電話 淮南騰訊地圖標注 開封便宜外呼系統(tǒng)報價 地圖標注人員兼職 商丘百應電話機器人有沒有效果 騰訊地圖標注商戶改名注冊入駐 電話機器人的特色和創(chuàng)新 黃石智能營銷電銷機器人效果
簡單介紹一下Java關于xml的API,這樣大家看到了縮寫就知道是干什么的了。水平有限,多多包涵。
  
  1、JAXP(Java API for XML Parsing)

  2、JAXB(Java API for XML Binding)

  3、JAXM(Java API for XML Messaging)

  4、JAX-RPC(Java API for XML-RPC)

  1、JAXP定義了在Java中使用DOM, SAX, XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當你需要改變具體的實現(xiàn)時候也不需要修改代碼。比如,你用的XSLT處理器太慢了,你想換一個,你不需要修改你以前的代碼,只要修改一下JAXP的相關配置。(在后面我將詳細地介紹)作為一個共同的接口,JAXP也有所謂的“最小公分母”效應,也就是說它支持的東西很有限。JAXP1.0支持XML1.0,XML Namespace1.0,SAX1.0以及DOM level 1。而JAXP1.1增加了對SAX2.0,DOM level 2以及XSLT1.0的支持。很明顯如果你想使用Xalan的XPath相關的接口,JAXP就沒有支持,你也只能將代碼綁定到特定的Xalan的API上了。

  這里還要提一下JDOM,雖然它沒有實現(xiàn)JAXP,但是由于它使用的簡單性,還是很受歡迎,并且成為了JCP正式推薦的API。它也是一種樹狀的結構表現(xiàn)XML,在使用方法上要比w3c的dom標準簡單易用的多。最新版本的JDOM在其內(nèi)部已經(jīng)開始使用JAXP的API,它會盡可能的去調用JAXP的API,如果不行就使用自己的默認XML解析器Xerces,XSLT處理器Xalan。

  2、JAXB定義了Java數(shù)據(jù)對象和xml結構之間的一種雙向映射關系。這樣你就可以很方便地將一個Java對象存儲為一個xml文檔,也可以從一個xml文檔實例化一個Java對象。它的結構是這樣子的:首先要有xml的dtd以及binding schema(這個不是xml的schema,而是一個定義Java對象和xml結構之間映射關系xml文檔),通過這兩個文件JAXB就可以生成與xml文檔結構一致的Java源文件,編譯之后就可以很方便地通過具體的xml文檔得到與xml結構一致的Java類(就是生成的那些類)unmarshalling,反過來marshalling也可以。

  它的缺點也很明顯,一旦xml的結構發(fā)生了改變,就要重新寫bindng schema以及重新生成編譯Java類。

  sun的動作總是一如既往地慢,在JAXB出臺之前已經(jīng)有了一些用于xml data binding的框架,我們再來看看同樣也是做xml databinding但是并沒有實現(xiàn)JAXB的框架:

  一、Castor

  Castor不僅僅支持對XML的綁定,它還支持對LDAP對象,用OQL將SQL查詢映射為對象,以及對JDO的支持。與JAXB不同的是,它需要的僅僅是xml的Schema。通過xml的Schema來生成相應的Java源代碼,編譯之后就可以marshalling和unmarshalling了。

  二、Zeus

  Zeus與Castor和JAXB相比,在class generation方面多做了些步驟,因此它可以支持多種的約束關系,包括對DTD,XML Schema以及TREX等等的支持。不過目前該項目好像已經(jīng)不做了。

  三、Quick

  Quick也是一個非常靈活的框架,詳細的情況可以google一下。

  3、JAXM

  JAXM是為SOAP通信提供訪問方法和傳輸機制的API。目前它支持SOAP1.1規(guī)范以及同步和異步通信。JAXM定義了大量服務,JAXM的實現(xiàn)產(chǎn)品將會提供這些服務,使得開發(fā)者不用面對復雜的通信系統(tǒng)。JAXM體系結構中包括兩個重要的組件:JAXM Client和Provider。Client通常是作為J2EE web或EJB容器的一部分,以提供你所寫的程序訪問JAXM服務的能力。而Provider可以以不同的方式實現(xiàn),主要負責發(fā)送和接收SOAP消息。這樣你就可以直接地使用JAXM的API直接發(fā)送和接收SOAP消息。

  4、JAX-RPC

  JAX-RPC是通過xml進行遠程過程調用的Java API。它是基于SOAP技術的,使用SOAP作為底層的協(xié)議。這樣對于開發(fā)者來說,只有方法,參數(shù),返回值是可見的,而底層的soap通信都被隱藏起來了,開發(fā)人員不需要與之直接打交道。

  JAXM和JAX-RPC在Web Services方面有很重要的作用。

  補充: JAXP框架查找具體實現(xiàn)的步驟

  JDK1.4自帶的是JAXP的參考實現(xiàn):Crimson的DOM, SAX解析器,Xalan的XSLT處理器。

  如果你想用其他的實現(xiàn)替代它們,那就必須了解JAXP框架查找實現(xiàn)的具體步驟:

  1、首先,算法會通過諸如javax.xml.transform.TranformerFactory這樣的系統(tǒng)屬性來定位具體實現(xiàn)的類。你可以在命令行中直接指定:

  java -Djavax.xml.transform.TransformerFactory=com.foo.ConcreteTransformer YourApp

  ConcreteTransformer是實現(xiàn)了TransformerFactory的子類,如果你用的是ant,也可以在build file中指定。

  同樣地有,javax.xml.parsers.document.uilderFactory和javax.xml.parsers.SAXBuilderFactory屬性。

  2、接著,如果系統(tǒng)屬性中沒有指定,JAXP將會在JRE的目錄中查找lib/jaxp.properties屬性文件,它像一般的properties文件一樣是由name=value組成的,假設有如下的一行:

  javax.xml.transform.TransformerFactory=com.foo.ConcreteTransformer

  那么JAXP就會使用相應的TransformerFactory實現(xiàn)。

  在Java程序中,你可以通過如下的代碼獲得JRE所在的目錄:

  String javaHomeDir = System.getProperty("java.home");

  不過要注意,如果是在一些IDE中使用,IDE會改變這個java.home的值,比如JBuilder。

  3、如果jaxp.properties不存在或者沒有相應的值,那么JAXP將會使用JAR文件的服務提供體制來定位正確的子類。簡單地說,你可以在jar文件的META-INF/services目錄下新建一個名為javax.xml.transform.TransformerFactory的文件,這個文件中只有一行:com.foo.ConcreteTransformer就可以了。

  4、最后,如果上面3步都沒有找到任何具體的實現(xiàn),JAXP就會使用缺省的實現(xiàn):Crimson和Xalan。
您可能感興趣的文章:
  • 在java中使用dom4j解析xml(示例代碼)
  • Java生成和解析XML格式文件和字符串的實例代碼
  • java對XML文件的解析、節(jié)點的增加、刪除操作總結
  • java dom4j解析xml用到的幾個方法
  • java讀取解析xml文件實例
  • Java中構造、生成XML簡明教程
  • java 使用JDOM解析xml文件
  • java解析xml常用的幾種方式總結
  • java操作XML實例代碼
  • java DOM4J 讀取XML實例代碼
  • Java中四種XML解析技術
  • java生成xml格式文件的方法

標簽:大興安嶺 鄭州 紅河 馬鞍山 亳州 武威 岳陽 拉薩

巨人網(wǎng)絡通訊聲明:本文標題《Java中關于XML的API》,本文關鍵詞  Java,中,關于,XML,的,API,Java,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Java中關于XML的API》相關的同類信息!
  • 本頁收集關于Java中關于XML的API的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    左云县| 堆龙德庆县| 益阳市| 阳泉市| 屯门区| 江津市| 大余县| 南宫市| 甘德县| 拉萨市| 黑水县| 辉县市| 刚察县| 晋江市| 巴青县| 左云县| 咸丰县| 思茅市| 昌吉市| 台南县| 贺兰县| 彭阳县| 渭南市| 塔城市| 定结县| 璧山县| 临沭县| 榆树市| 青海省| 阳西县| 巴彦县| 广宗县| 汉沽区| 堆龙德庆县| 祁连县| 阳泉市| 成安县| 灵丘县| 德江县| 盐池县| 涿鹿县|