六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

<>


標簽:Java中對于XML的API 

Java中對于XML的API

[摘要]簡單介紹一下Java關于xml的API,這樣大家看到了縮寫就知道是干什么的了。水平有限,多多包涵。      1、JAXP(Java API for XML Parsing)   2、JAXB(Java API for XML Binding)   3、JAXM(Java API for XML ...
簡單介紹一下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的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當你需要改變具體的實現時候也不需要修改代碼。比如,你用的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,雖然它沒有實現JAXP,但是由于它使用的簡單性,還是很受歡迎,并且成為了JCP正式推薦的API。它也是一種樹狀的結構表現XML,在使用方法上要比w3c的dom標準簡單易用的多。最新版本的JDOM在其內部已經開始使用JAXP的API,它會盡可能的去調用JAXP的API,如果不行就使用自己的默認XML解析器Xerces,XSLT處理器Xalan。

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

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

  sun的動作總是一如既往地慢,在JAXB出臺之前已經有了一些用于xml data binding的框架,我們再來看看同樣也是做xml databinding但是并沒有實現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等等的支持。不過目前該項目好像已經不做了。

  三、Quick

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

  3、JAXM

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

  4、JAX-RPC

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

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

  補充: JAXP框架查找具體實現的步驟

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

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

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

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

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

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

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

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

  那么JAXP就會使用相應的TransformerFactory實現。

  在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步都沒有找到任何具體的實現,JAXP就會使用缺省的實現:Crimson和Xalan。

相關文章

主站蜘蛛池模板: 日日夜夜免费精品视频 | 亚洲人与牲动交xxxxbbbb | 亚洲国产精品免费观看 | 亚韩在线 | 亚洲成人娱乐网 | 欧美写真视频一区 | 日本激情在线 | 亚洲高清视频一区 | 啪啪免费视频 | 亚洲天堂精品在线观看 | 欧美一级黄色片 | 亚洲视频大全 | 欧美性猛交xxxx | 色又色| 色噜噜噜噜噜在线观看网站 | 午夜人成 | 骚碰97| 色窝视频 | 午夜性爽视频男人的天堂在线 | 五月婷婷丁香六月 | 视频在线免费高清 | 欧美网站www | 亚洲第一免费网站 | 色综合一区 | 天天舔天天爱 | 亚洲国产成人精彩精品 | 欧美综合伊人久久 | 四虎 在线播放 | 欧美视频精品在线观看 | 日本美女爱爱视频 | 亚洲久草 | 天堂在线最新版资源www | 全国男人的天堂天堂网 | 日本不卡高清免费v日本 | 青草青在线视频 | 亚洲欧洲一区二区三区 | 日日夜夜免费精品视频 | 亚洲a图| 亚洲精品免费在线观看 | 一本到视频在线观看 | 中文一区在线 |