2、JAXB(Java API for XML Binding)

  3、JAXM(Java API for XML M " /> 久久精品国产亚洲AV天美18,国产精品久久久久久久AV下载,亚洲精品视频在线播放

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Java中關(guān)于XML的API

簡(jiǎn)單介紹一下Java關(guān)于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的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當(dāng)你需要改變具體的實(shí)現(xiàn)時(shí)候也不需要修改代碼。比如,你用的XSLT處理器太慢了,你想換一個(gè),你不需要修改你以前的代碼,只要修改一下JAXP的相關(guān)配置。(在后面我將詳細(xì)地介紹)作為一個(gè)共同的接口,JAXP也有所謂的“最小公分母”效應(yīng),也就是說(shuō)它支持的東西很有限。JAXP1.0支持XML1.0,XML Namespace1.0,SAX1.0以及DOM level 1。而JAXP1.1增加了對(duì)SAX2.0,DOM level 2以及XSLT1.0的支持。很明顯如果你想使用Xalan的XPath相關(guān)的接口,JAXP就沒(méi)有支持,你也只能將代碼綁定到特定的Xalan的API上了。

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

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

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

  sun的動(dòng)作總是一如既往地慢,在JAXB出臺(tái)之前已經(jīng)有了一些用于xml data binding的框架,我們?cè)賮?lái)看看同樣也是做xml databinding但是并沒(méi)有實(shí)現(xiàn)JAXB的框架:

  一、Castor

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

  二、Zeus

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

  三、Quick

  Quick也是一個(gè)非常靈活的框架,詳細(xì)的情況可以google一下。

  3、JAXM

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

  4、JAX-RPC

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

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

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

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

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

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

  Java -DJavax.xml.transform.TransformerFactory=com.foo.ConcreteTransformer YourApp

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

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

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

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

  那么JAXP就會(huì)使用相應(yīng)的TransformerFactory實(shí)現(xiàn)。

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

  String JavaHomeDir = System.getProperty("Java.home");

  不過(guò)要注意,如果是在一些IDE中使用,IDE會(huì)改變這個(gè)Java.home的值,比如JBuilder。

  3、如果jaxp.properties不存在或者沒(méi)有相應(yīng)的值,那么JAXP將會(huì)使用JAR文件的服務(wù)提供體制來(lái)定位正確的子類。簡(jiǎn)單地說(shuō),你可以在jar文件的META-INF/services目錄下新建一個(gè)名為Javax.xml.transform.TransformerFactory的文件,這個(gè)文件中只有一行:com.foo.ConcreteTransformer就可以了。

  4、最后,如果上面3步都沒(méi)有找到任何具體的實(shí)現(xiàn),JAXP就會(huì)使用缺省的實(shí)現(xiàn):Crimson和Xalan。

jsp技術(shù)Java中關(guān)于XML的API,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 热久久伊大人香蕉网老师 | 后入内射国产一区二区 | 女生扒开尿口 | 无码成人AAAAA毛片含羞草 | 最新国产av.在线视频 | 免费国产午夜理论不卡 | 丝袜足控免费网站xx91 | 久久久无码精品亚洲A片猫咪 | 毛片免费观看 | 国产成在线观看免费视频 | 日本久久精品毛片一区随边看 | 在线亚洲中文精品第1页 | 亚洲一区二区女搞男 | 理论片午午伦夜理片2021 | 中文字幕一区二区三区在线播放 | 日韩欧美视频一区二区在线观看 | 与子敌伦刺激对白亂輪亂性 | 日本毛片久久国产精品 | 999国产高清在线精品 | 美女隐私黄www视频 美女议员被泄裸照 | 恋老视频 国产国佬 | 久久毛片基地 | 99re6在线视频国产精品欧美 | 国产视频a在线观看v | 亚洲精品无码葡京AV天堂 | 韩国无遮羞禁动漫在线观看96 | 久久久久久久伊人电影 | black大战chinese周晓琳 | 人妻满熟妇AV无码区国产 | 无羞耻肉动漫在线观看 | 国产午夜亚洲精品区 | 色欲AV精品人妻一区二区麻豆 | 午夜在线观看免费完整直播网 | 乳色吐息未增删樱花ED在线观看 | 午夜伦伦电影理论片费看 | 孕交videosgratis乌克兰 | 我就去色色| a视频在线观看 | 亚洲精品天堂在线观看 | 国产精品无码AV天天爽人妻蜜桃 | 久久99r66热这里只有精品 |