多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 一個使用Apache SDO處理XML數據的例子

一個使用Apache SDO處理XML數據的例子

來源:程序員人生   發布時間:2014-03-28 02:01:18 閱讀次數:2603次
本文給出了一個使用Apache SDO處理XML數據的例子。由于SDO現在還不是處理XML的標準的解決方案,因此,本文還討論了SDO中的基本的操作XML數據的方法。

跟蹤數據的變化在很多軟件、應用程序和商業場景中是一個基本的要求。如果要嚴格地實現這個需求是非常困難的,這主要是因為對文件的不同變化建模,并監視這些變化一般很難做到。從另一方面講,在所有的程序中反復地實現這種功能要比將一個單獨的模塊應用到不同的應用程序中更經濟實用。而服務數據對象(SDO),這個由BEA和IBM定義的異構數據訪問解決方案,為開發人員提供了更容易實現的機制來從系統層跟蹤數據的變化。

一、處理XML數據的三個階段

在本文給出的處理XML的例子分為三個不同的階段,這些階段如下:

1. 建立

2. 處理

3. 瀏覽

XML數據可以通過一個文件系統在這三個階段之間進行傳輸。在本例的中心場景如下:第二步需要記錄XML文件在第一階段被建立的記錄,當第三步瀏覽XML數據時,人們總希望知道這個文件有哪些變化。如果我們使用Word的跟蹤特性,我們將會立即獲得這些變化的值。

許多應用程序都有這些需求,包括實現并發控制、離線應用程序的同步,商業進程管理(BPM)系統。這部分將演示SDO如何幫助我們更容易地實現這些需求。

本文提供的XML數據是一個訂購數據,代碼如下:

以下為引用的內容:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com/PO"
targetNamespace="http://www.example.com/PO">

<xsd:import namespace="commonj.sdo/xml" schemaLocation="sdo.xsd"/>
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
<xsd:element name="comment" type="xsd:string"/>

<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="items" type="Items"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
<xsd:complexType name="StatusType">
<xsd:sequence>
<xsd:element name="status" type="xsd:string"/>
<xsd:element name="contact" type="xsd:string"/>
<xsd:element name="changeDate" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="USAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
</xsd:complexType>
<xsd:complexType name="Items">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="productName" type="xsd:string"/>
<xsd:element name="price" type="xsd:decimal"/>
<xsd:element name="quantity">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>


CreatePO.java類完成了建立XML的工作。代碼如下

以下為引用的內容:
package com.company.sdo.po;
import commonj.sdo.DataObject;
import commonj.sdo.helper.DataFactory;
public class CreatePO {
public static void main(String[] args) throws Exception {
//1. 使用XSD定義類型和屬性
Util.definePOTypes();
//2. 建立根DataObject
DataObject purchaseOrder =
DataFactory.INSTANCE.create(Constants.PO_NAMESPACE, "PurchaseOrderType");
//3. 設置根DataObject的數據類型屬性
purchaseOrder.setString("orderDate", "1999-10-20");
//4. 建立子DataObject
DataObject shipTo = purchaseOrder.createDataObject("shipTo");
//5. 設置子DataObject的數據類型屬性
shipTo.set("country", "US");
shipTo.set("name", "Alice Smith");
shipTo.set("street", "123 Maple Street");
shipTo.set("city", "Mill Valley");
shipTo.set("state", "CA");
shipTo.setString("zip", "90952");
DataObject billTo = purchaseOrder.createDataObject("billTo");
billTo.set("country", "US");
billTo.set("name", "Robert Smith");
billTo.set("street", "8 Oak Avenue");
billTo.set("city", "Mill Valley");
billTo.set("state", "PA");
billTo.setString("zip", "95819");
purchaseOrder.set("comment", "Hurry, my lawn is going wild!");
DataObject items = purchaseOrder.createDataObject("items");
//6. 為子DataObject “item”建立一個子DataObject
DataObject item1 = items.createDataObject("item");
item1.set("partNum", "872-AA");
item1.set("productName", "Lawnmower");
item1.setInt("quantity", 1);
item1.setString("price", "148.95");
item1.set("comment", "Confirm this is electric");
DataObject item2 = items.createDataObject("item");
item2.set("partNum", "926-AA");
item2.set("productName", "Baby Monitor");
item2.setInt("quantity", 1);
item2.setString("price", "39.98");
item2.setString("shipDate", "2007-11-21");
DataObject item3 = items.createDataObject("item");
item3.set("partNum", "998-AA");
item3.set("productName", "Carpet");
item3.setInt("quantity", 1);
item3.setString("price", "439.98");
item3.setString("shipDate", "2007-12-01");
//7. 將XML數據保存在一個XML文件中
Util.storeXML(purchaseOrder,"purchaseOrder", Constants.PO_XML);
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲人在线播放 | 爱爱综合 | 性配久久久 | 亚洲第一免费视频 | 伊人久久久综在合线久久在播 | 国产成人高清精品免费5388密 | 久久婷婷人人澡人人爱91 | 午夜亚洲视频 | 中国黄色网址大全 | 亚洲国产精品自在在线观看 | 极品美女国产精品免费一区 | 欧美另类bbw| 国产精品一区二区综合 | 伊人色网站 | 永久在线观看 | 91精品国产综合久久久久 | 欧美 日韩 中文字幕 | 小说区图片区综合久久亚洲 | 久久天天躁狠狠躁夜夜躁 | 亚洲欧美另类日本久久影院 | 加勒比一道本综合 | 亚洲国产成人久久综合一区 | 国产亚洲第一页 | www.色老头.com | 国产精品www| 亚洲欧美一 | 色自拍 | 亚洲欧美日韩人成 | 欧美日本一区视频免费 | 伊人婷婷在线 | 亚洲动漫第一页 | 欧美在线精品一区二区三区 | 综合亚洲精品一区二区三区 | 精品国产爱久久 | 久久国产欧美另类久久久 | 伊人啪啪网 | 综合色网站 | 最近免费中文字幕大全高清10 | 日本免费乱人伦在线观看 | 国产免费一区二区三区在线观看 | 最近最新中文字幕8 |