Apache sdo学习笔记(二)——通过Shema创建DataObject对象
来源:互联网 发布:工作 打击 知乎 编辑:程序博客网 时间:2024/05/06 15:16
1:schema文件po.xsd
<?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: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="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>
2:java代码
package com.waysoft.intergration.dao;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.net.URL;import org.apache.tuscany.sdo.api.SDOUtil;import commonj.sdo.DataObject;import commonj.sdo.helper.HelperContext;import commonj.sdo.helper.XSDHelper;public class Test1 {/** * @param args */public static void main(String[] args) {try {// create HelperContextHelperContext scope = SDOUtil.createHelperContext();// load .xsd documentloadTypesFromXMLSchemaFile(scope, Test1.class.getResource("/").getPath().substring(1)+"po.xsd");// create DataObjectDataObject po = scope.getDataFactory().create("http://www.example.com/PO","PurchaseOrderType");// 设置属性值po.setString("orderDate", "2010-07-07");DataObject shipTo = po.createDataObject("shipTo"); // 设置属性值shipTo.setString("country", "中国"); // 设置简易子元素的值 [与设置属性值的方式相同,二者的区别由类型决定]shipTo.setString("name", "张三");shipTo.setString("street", "东岳大街");shipTo.setString("city", "泰安市");shipTo.setString("state", "山东省");shipTo.setString("zip", "27100");DataObject billTo = po.createDataObject("billTo");billTo.setString("country", "中国");billTo.setString("name", "李四");billTo.setString("street", "长乐街");billTo.setString("city", "杭州");billTo.setString("state", "浙江省");billTo.setString("zip", "310000");po.set("comment", "This is a test comment.");DataObject items = po.createDataObject("items");DataObject item1 = items.createDataObject("item");item1.setString("partNum", "123-AB");item1.setString("productName", "apple");item1.setString("price","1.2");item1.setString("quantity", "12");item1.setString("comment", "empty comment.");item1.setString("shipDate", "2010-06-30");DataObject item2 = items.createDataObject("item");item2.setString("partNum", "456-CD");item2.setString("productName", "pear");item2.setString("price","2.1");item2.setString("quantity", "21");item2.set("comment", "empty comment.");// -- savescope.getXMLHelper().save(po, "http://www.example.com/PO", "purchaseOrder",System.out);} catch(Exception e){e.printStackTrace();}}public static void loadTypesFromXMLSchemaFile(HelperContext helperContext,String filename)throws IOException{XSDHelper xsdHelper = helperContext.getXSDHelper();InputStream in = null;try {URL url = new File(filename).toURI().toURL();in = url.openStream();xsdHelper.define(in, url.toString());} catch (IOException e){System.err.print("[错误]:");System.out.println("无法加载 " + filename + " .");throw e;} finally {try { if (in != null) in.close();} catch (Exception e){}}}}
3:运行结果
<?xml version="1.0" encoding="UTF-8"?><po:purchaseOrder xmlns:po="http://www.example.com/PO" orderDate="2010-07-07"> <shipTo country="中国"> <name>张三</name> <street>东岳大街</street> <city>泰安市</city> <state>山东省</state> <zip>27100</zip> </shipTo> <billTo country="中国"> <name>李四</name> <street>长乐街</street> <city>杭州</city> <state>浙江省</state> <zip>310000</zip> </billTo> <po:comment>This is a test comment.</po:comment> <items> <item partNum="123-AB"> <productName>apple</productName> <price>1.2</price> <quantity>12</quantity> <po:comment>empty comment.</po:comment> <shipDate>2010-06-30</shipDate> </item> <item partNum="456-CD"> <productName>pear</productName> <price>2.1</price> <quantity>21</quantity> <po:comment>empty comment.</po:comment> </item> </items></po:purchaseOrder>
- Apache sdo学习笔记(二)——通过Shema创建DataObject对象
- Apache SDO学习笔记(一)——通过xml字符串创建DataObject对象
- Apache sdo学习笔记(三)——通过DataGraph创建DataObject对象
- Apache sdo学习笔记(四)——通过动态类型创建DataObject
- Apache sdo学习笔记(五)——变更摘要
- Apache sdo学习笔记(六)——数据访问服务(DAS)访问关系数据库
- javascript面向对象学习笔记(二)——创建对象
- SDO处理(二)
- MATLAB学习笔记(二):符号计算(创建符号对象)
- AJAX学习笔记(二)_创建XMLHttpRequest对象
- JavaScript学习笔记二十一:创建对象
- JavaScript学习笔记(二)——对象
- Java学习笔记(二)——类和对象
- JVM学习笔记(二)——对象之生
- java学习笔记(二)——对象扩展
- underscore学习笔记—对象函数/Objects(二)
- java 虚拟机学习笔记(二)—对象访问
- js学习笔记:对象——创建对象
- Linux信号列表(sigint,sigtstp..)
- OpenCV参考手册之Mat类详解1
- 操作系统真实的虚拟内存是什么样的
- 服务器启动时,web.xml配置加载顺序解释
- linux之sed用法
- Apache sdo学习笔记(二)——通过Shema创建DataObject对象
- android源码settings中显示所有正在运行进程流程分析
- 使用spring-struts2-hibernate框架参与web开发小结
- SQL Server 2005数据库用户权限管理的设置
- linux kernel 中的work queue原理
- hibernate 一对多 查询一方 出现重复记录
- HADOOP 0.20.2以上版本MapReduce中采用压缩技术
- ubuntu linux 配置PATH JAVA PATH(解决双击不能启动eclipse的问题)
- for循环 增强for循环 iterator遍历集合的区别与用法