欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用XMLBeans處理XML數據和文檔入門(mén)
[文章摘要]  XMLBeansBea公司的一個(gè)項目,用于訪(fǎng)問(wèn)和處理xml數據和文檔。使用XMLBeans可以讓您用面向對象的觀(guān)點(diǎn)來(lái)對待和處理xml數據和文檔,同時(shí)又可以忠實(shí)于該xml數據對應的xml結構和schema。本文中作者簡(jiǎn)單的介紹了XMLBeans,并且給出了一個(gè)簡(jiǎn)單的例子,詳細的演示了如何配置XMLBeans使它正常運行的全部過(guò)程。

關(guān)鍵詞: XMLBeans 訪(fǎng)問(wèn) XML

XMLBeans來(lái)自于Bea,是使用java技術(shù)訪(fǎng)問(wèn)和處理XML數據和文檔技術(shù)的一次突破性進(jìn)展。第一次,開(kāi)發(fā)者可以用自己熟悉的、方便的、面向對象的視圖來(lái)看待XML數據,同時(shí)又可以訪(fǎng)問(wèn)該xml數據對應的xml結構和schema。

――來(lái)自于Bea的關(guān)于XMLBeans的介紹

XMLBeansBea公司針對XML處理的一個(gè)項目,現在已經(jīng)提供免費下載和使用,目前的最新版本是1.0。

1 為什么使用XMLBeans

XMLBeans之前,我們訪(fǎng)問(wèn)xml數據和文檔有兩種選擇:

1. 使用DOM、SAX來(lái)訪(fǎng)問(wèn)XML數據和文檔的內容

2. 使用JAXB等技術(shù)將XML映射為java類(lèi)

不管你使用哪一種,你都無(wú)法完整的訪(fǎng)問(wèn)該XML數據和對象的豐富內容和Schema信息。產(chǎn)生的原因是因為java數據模型和XML之間不匹配造成的,所以應用中你要不就選擇了可擴展性,要不就只能選擇系統的強壯性。

隨著(zhù)XMLBeans的出現,我們不需要再采取這種折衷的措施了。XMLBeans提供了更多的特性來(lái)訪(fǎng)問(wèn)XML數據和文檔:

1.   XMLBeans是基于標記流,因此可以輕松的使用指針在xml數據和文檔之間導航。指針接口適用于所有xml數據和文檔。

2.   如果你的xml數據和文檔有一個(gè)schema的話(huà),XMLBeans將給您生成這些XML數據和文檔的java類(lèi)“視圖”(也就是訪(fǎng)問(wèn)這些XML數據和文檔的java代碼)。

3.   開(kāi)發(fā)者可以使用這些java代碼輕松的讀/寫(xiě)xml數據和文檔,而且被強制的執行xml schema中規定的一些約束。

4.   java類(lèi)“視圖”都能夠忠實(shí)的表述原始xml數據和文檔的內容,因為java類(lèi)“視圖”都是基于受保護的、最基本的xml表現。

所以使用XMLBeans來(lái)訪(fǎng)問(wèn)xml 數據和文檔的好處是顯而易見(jiàn)的:

1.   完全使用面向對象的觀(guān)點(diǎn)來(lái)看待和處理數據和文檔

2.   開(kāi)發(fā)者不再需要編寫(xiě)大量的代碼來(lái)訪(fǎng)問(wèn)XML數據和文檔

3.   可以使用schema中規定的對于數據的約束條件,而不需要自己去編寫(xiě)實(shí)現這些約束的代碼

4.   不需要解析所有的xml數據和文檔而僅僅是為了訪(fǎng)問(wèn)其中的某個(gè)數據項

關(guān)于XMLBeans更詳細的情況請大家訪(fǎng)問(wèn)http://dev2dev.bea.com/technologies/xmlbeans/

2 環(huán)境和工具準備

XMLBeans中的大量工作使用了Ant工具,所以再開(kāi)始工作之前請下載Ant工具并使它正常運行。

XMLBeansjava實(shí)現請大家到bea的網(wǎng)站上下載:http://dev2dev.bea.com/technologies/xmlbeans/index.jsp

在執行過(guò)程中,還需要用訪(fǎng)問(wèn)xmldom組件,也就是xml-apis.jar文件,可到http://xml.apache.org/xerces2-j/index.html下載。附件中的test-XMLBeans.rar文件中也有這個(gè)jar文件。

3 第一個(gè)例子

3.1    實(shí)例說(shuō)明

我們這里使用一個(gè)訂單的例子,他的實(shí)例文檔如下:

<po:purchase-order xmlns:po=" http://vivianj.go.nease.net/easypo ">

    <po:customer>

  <po:name>Gladys Kravitz</po:name>

  <po:address>Anytown, PA</po:address>

    </po:customer>

    <po:date>2003-01-07T14:16:00-05:00</po:date>

    <po:line-item>

  <po:description>Burnham‘s Celestial Handbook, Vol 1</po:description>

  <po:per-unit-ounces>5</po:per-unit-ounces>

  <po:price>21.79</po:price>

  <po:quantity>2</po:quantity>

    </po:line-item>

    <po:line-item>

  <po:description>Burnham‘s Celestial Handbook, Vol 2</po:description>

  <po:per-unit-ounces>5</po:per-unit-ounces>

  <po:price>19.89</po:price>

  <po:quantity>2</po:quantity>

    </po:line-item>

<po:shipper>

  <po:name>ZipShip</po:name>

  <po:per-ounce-rate>0.74</po:per-ounce-rate>

    </po:shipper>

</po:purchase-order>

我們使用下面的schema來(lái)描述這個(gè)實(shí)例文檔:

<xs:schema

   xmlns:xs="http://www.w3.org/2001/XMLSchema"

   xmlns:po="http://vivianj.go.nease.net/easypo"

   targetNamespace="http://vivianj.go.nease.net/easypo"

   elementFormDefault="qualified">

  <xs:element name="purchase-order">

    <xs:complexType>

      <xs:sequence>

  <xs:element name="customer" type="po:customer"/>

  <xs:element name="date" type="xs:dateTime"/>

  <xs:element name="line-item" type="po:line-item" minOccurs="0" maxOccurs="unbounded"/>

  <xs:element name="shipper" type="po:shipper" minOccurs="0" maxOccurs="1"/>

      </xs:sequence>

    </xs:complexType>

  </xs:element>

  <xs:complexType name="customer">

    <xs:sequence>

      <xs:element name="name" type="xs:string"/>

      <xs:element name="address" type="xs:string"/>

    </xs:sequence>

    <xs:attribute name="age" type="xs:int"/>

  </xs:complexType>

  <xs:complexType name="line-item">

    <xs:sequence>

      <xs:element name="description" type="xs:string"/>

      <xs:element name="per-unit-ounces" type="xs:decimal"/>

      <xs:element name="price" type="xs:decimal"/>

      <xs:element name="quantity" type="xs:integer"/>

    </xs:sequence>

  </xs:complexType>

  <xs:complexType name="shipper">

    <xs:sequence>

      <xs:element name="name" type="xs:string"/>

      <xs:element name="per-ounce-rate" type="xs:decimal"/>

    </xs:sequence>

  </xs:complexType>

</xs:schema>

現在,要訪(fǎng)問(wèn)的xml數據已經(jīng)確定了,而且已經(jīng)用schema來(lái)描述他了,剩下的就是使用XMLBeans來(lái)輔助生成訪(fǎng)問(wèn)XML數據的java代碼了,下面的章節將詳細的介紹這部分內容

3.2    ant輔助生成訪(fǎng)問(wèn)XML數據的java代碼

3.2.1      外部jar文件

在使用XMLBeans生成訪(fǎng)問(wèn)XML數據的java代碼時(shí),我們需要用到xbean.jar文件,下載的XMLBeans里面有這個(gè)文件。

3.2.2      增加的taskdef

編譯腳本執行時(shí)候必須增加一個(gè)XMLBeantaskdef,內容如下:

<taskdef name="xmlbean" classname="com.bea.xbean.tool.XMLBean" classpath="path/to/xbean.jar"/>

3.2.3      xmlbean

使用xmlbean標簽來(lái)生成訪(fǎng)問(wèn)xml數據的java代碼,簡(jiǎn)單的例子如下:

<xmlbean schema="schemas" destfile="Schemas.jar"/>

<xmlbean schema="schemaseasypo.xsd" destfile="Schemas.jar" srcgendir="." >

第一個(gè)例子表示為schemas下面所有的*.xsd文件生成訪(fǎng)問(wèn)代碼,將所有的代碼編譯好后放入Schemas.jar文件中。

第二個(gè)例子表示為schemas下面所有的easypo.xsd文件生成訪(fǎng)問(wèn)代碼,將所有的代碼編譯好后放入Schemas.jar文件中,而且將生成的。Java文件放在當前目錄下。

其中的參數簡(jiǎn)單的說(shuō)明如下:

xmlbean 標簽表示這是要生成指定schema文件的訪(fǎng)問(wèn)代碼。

Schema  屬性表示要生成訪(fǎng)問(wèn)代碼的xsd文件的范圍,可以是一個(gè)目錄,也可以

是一個(gè)文件或者使用fileset進(jìn)行定義。

Destfile  屬性定義了被生成的代碼編譯后將放在那個(gè)文件中。

Rcgendir 屬性則表示生成的。Java文件將放在那個(gè)目錄中。

Xmlbean標簽支持的其它參數和相關(guān)的說(shuō)明請參考XMLBeans的幫助文檔,這里不作過(guò)多的說(shuō)明。

3.2.4      實(shí)際的build.xml

<project name="MyProject" default="compile" basedir=".">

<property name="src" value="."/>

<property name="build" value="build"/>

<property name="dist"  value="dist"/>

<property name="classpath" value="./xkit/lib/xbean.jar "/>

<target name="init">

    <!-- Create the build directory structure used by compile -->

    <mkdir dir=""/>

</target>

<target name="compile" depends="init">

    <!-- Compile the java code from into -->

    <taskdef name="xmlbean" classname="com.bea.xbean.tool.XMLBean" classpath=""/>

    <xmlbean schema="schemas/easypo.xsd" classpath="" destfile="easypo.jar" srcgendir=""/>

  </target>

</project>

3.2.5      生成jar文件

現在你可以進(jìn)入build.xml文件所在的目錄,執行ant f build.xml來(lái)生成所有訪(fǎng)問(wèn)該easypo.xml的代碼。

執行完以后,這個(gè)目錄下面會(huì )多出一個(gè)Schemas.jar文件,他包含了所有被生成和編譯了的、訪(fǎng)問(wèn)xml文檔的.class文件。目錄下面會(huì )多出一個(gè)net目錄,他的子目錄下包含了所有被生成的.java文件.實(shí)際的jar文件構成請大家參考作者提供的Schemas.jar文件.

4 測試一下

4.1    測試代碼

好了,現在我們來(lái)寫(xiě)個(gè)例子,測試一下是否可以成功的訪(fǎng)問(wèn)xml數據.完整的代碼請參看

//解析xml實(shí)例文檔,他的參數poFile是一個(gè)file類(lèi)型的參數

//所以需要我們將3.1的實(shí)例文檔保存為一個(gè).xml文檔

PurchaseOrderDocument poDoc =

      PurchaseOrderDocument.Factory.parse(poFile);

//創(chuàng )建一個(gè)訪(fǎng)問(wèn)該xml實(shí)例文檔的接口PurchaseOrder

/**[讓作者感到很意外的是,bea提供的例子代碼中這段的定義是這樣的:

*PurchaseOrder po = poDoc.getPurchaseOrder();

*也就是說(shuō)PurchaseOrder這個(gè)接口應該是一個(gè)單獨的類(lèi),但是作者查看XMLBeans

*最后生成的.java文件中,這個(gè)PurchaseOrder卻是作為PurchaseOrderDocument的一

*個(gè)內部類(lèi)出現的

*/

PurchaseOrderDocument.PurchaseOrder po = poDoc.getPurchaseOrder();

//直接過(guò)去其中的所有lineitem子元素的所有內容,他返回一個(gè)lineitem對象的數組.

  LineItem[] lineitems = po.getLineItemArray();

  System.out.println("Purchase order has " + lineitems.length + " line items.");

  double totalAmount = 0.0;

  int numberOfItems = 0;

//直接使用對應的get方法來(lái)獲取對應屬性的值

  for (int j = 0; j < lineitems.length; j++)

  {

      System.out.println(" Line item: " + j);

      System.out.println(

    "   Description: " + lineitems[j].getDescription());

      System.out.println("   Quantity: " + lineitems[j].getQuantity());

      System.out.println("   Price: " + lineitems[j].getPrice());

      numberOfItems += lineitems[j].getQuantity().intValue();

      totalAmount += lineitems[j].getPrice().doubleValue() * lineitems[j].getQuantity().doubleValue();

  }

  System.out.println("Total items: " + numberOfItems);

  System.out.println("Total amount: " + totalAmount);

4.2    測試結果

運行這段代碼,應該在控制臺打印如下信息:

Purchase order has 3 line items.

 Line item 0

   Description: Burnham‘s Celestial Handbook, Vol 1

   Quantity: 2

   Price: 21.79

 Line item 1

   Description: Burnham‘s Celestial Handbook, Vol 2

   Quantity: 2

   Price: 19.89

Total items: 4

Total amount: 41.68

5 總結

XMLBeansBea公司的一個(gè)公開(kāi)源代碼項目,以Schema為基礎建立的、訪(fǎng)問(wèn)xml的一種解決方法,提供了訪(fǎng)問(wèn)和處理xml數據和文檔時(shí)既可以完全的訪(fǎng)問(wèn)xml的內容、又不丟失xmlschema信息的強大功能。使用XMLBeans可以讓您用面向對象的觀(guān)點(diǎn)來(lái)對待和處理xml數據和文檔,同時(shí)又可以忠實(shí)于該xml數據對應的xml結構和schema。

本文中作者簡(jiǎn)單的介紹了XMLBeans,并且給出了一個(gè)簡(jiǎn)單的例子,詳細的演示了如何配置XMLBeans,如何使用他的ant擴展輔助生成訪(fǎng)問(wèn)xmljava代碼,如何編寫(xiě)客戶(hù)端來(lái)測試該段代碼是否成功執行的全過(guò)程。希望能夠讓大家掌握如何使用XMLBeans來(lái)簡(jiǎn)化各自的開(kāi)發(fā)工作、提高自己的開(kāi)發(fā)速度。XMLBeans的高級應用將在接下來(lái)的文章中介紹。

參考資料:

1. ANT的幫助 http://ant.apache.org/

2. XMLBeans的幫助 http://dev2dev.bea.com/technologies/xmlbeans/

工具下載:

1. ANT工具下載 http://archive.apache.org/dist/ant/binaries/

2. XMLBeans下載  http://dev2dev.bea.com/technologies/xmlbeans/

作者的所有工作文件: test-XMLBeans.rar

作者信息:

姓名: 肖菁

聯(lián)系方式: 0731-6665772,jing.xiao.com

簡(jiǎn)介: 作者目前是湖南省長(cháng)沙鐵道學(xué)院科創(chuàng )計算機系統集成有限公司軟件中心軟件工程師,IBM developerworksBEA dev2dev撰稿人,主要研究J2EE編程技術(shù)、Web Service技術(shù)以及他們在websphere、weblogic、apache平臺上的實(shí)現,擁有IBM Developing With Websphere Studio證書(shū)。歡迎大家訪(fǎng)問(wèn)作者的個(gè)人網(wǎng)站: vivianj.go.nease.net

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用xmlbeans解析xml
XML Schema 是什么
XMLSchema 詳解
五分鐘solr4.5教程(搭建、運行) | 羅生沙博客–分享是一種快樂(lè )
中國XML論壇--RDF與XML的區別是什么?
理解XML Schema: XML Schema進(jìn)階(I)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久