日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發布時間:2014-03-28 02:01:18 閱讀次數:2608次
本文給出了一個使用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);
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91伦理视频在线观看 | 日本精品在线观看视频 | 国产91精品一区二区 | 中文字幕在线一区 | 在线欧美亚洲 | 欧美日韩在线免费 | 国产欧美在线观看 | 国产精品视频在线观看 | 国产丝袜一区二区三区免费视频 | 亚洲福利天堂 | 成人资源在线观看 | 色一情一乱一伦一区二区三区 | 久久婷婷一区 | 精品美女一区二区 | 亚洲国产一二三 | 一级免费黄 | 日本三级网址 | 久久精品网 | 一区二区三区av在线 | 黄色小视频在线看 | 成人夜晚看av| 日韩久久久精品 | 中文字幕一区二区三区乱码图片 | 999久久久精品 | 欧美精品成人一区二区三区四区 | 一区二区三区高清 | 国产精品视频免费在线观看 | 狠狠干狠狠操 | 交视频在线观看国产 | 国产精品美女久久久久av超清 | 在线视频久久 | 欧美成人激情视频 | 999国产视频 | 国产精品第 | 国内成人精品2018免费看 | 国产精品一二三四区 | 国产一区二区在线免费 | 在线播放一区二区三区 | 欧美怡红院视频一区二区三区 | 最新国产精品精品视频 | 欧洲久久久久久 |