在从一个schema实例中构造一个DO的时候,发现了一个有趣的问题,代码如下:
String str = "<m:receiveResult xmlns:m=\"http://ordertomanufacturingservice.services.starflow.ro.icss.com/wsdl\">" +
"<orderId>rrrrr4</orderId>" +
"<customerName>String</customerName>" +
"<orderState>ORDER-FINISHED</orderState>" +
"<orderItems>" +
"<orderItem> " +
"<productName>String</productName>" +
"<price>3.1415926535897932384626433832795</price> " +
"<quantity>String</quantity> " +
"<comment>String</comment> " +
"<shipDate>String</shipDate> " +
"</orderItem>" +
"</orderItems>" +
"</m:receiveResult>";
//从字符串创造DataObject
String str2 =
"<m:ReceiveOrder xmlns:m=\"http://ordertomanufacturingservice.services.starflow.ro.icss.com/wsdl/\">" +
"<orderId>testreciiveServcice11111</orderId>" +
"<customerId>String</customerId>" +
"<customerName>String</customerName>" +
"<orderItems>" +
"<orderItem> " +
"<productName>String</productName>" +
"<price>3.1415926535897932384626433832795</price>" +
"<quantity>String</quantity>" +
"<comment>String</comment>" +
"<shipDate>String</shipDate> " +
"</orderItem>" +
"</orderItems>" +
"</m:ReceiveOrder>";
//创造一个DataObject
HelperContext scope = SDOUtil.createHelperContext();
loadTypesFromXMLSchemaStr(scope,schema3);
XMLDocument xmlDoc = getXMLDocumentFromString(scope,str2);
DataObject root = xmlDoc.getRootObject();
//从创建的DO中取值
String orderId = root.get("orderId").toString();
String customerName = root.get("customerName").toString();
System.out.println("rootType:"+root.getType().getName());
System.out.println("orderId: "+orderId);
System.out.println("customerName: "+customerName);
打印的结果为:
rootType:AnyTypeDataObject
orderId: [org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl@10ffb38
(mixed: [xml.type:text=testreciiveServcice11111], anyAttribute: null)]
customerName: [org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl@36527f
(mixed: [xml.type:text=String], anyAttribute: null)]
为什么呢?明明我创建的是ReceiveOrder类型,得出的确实AnyTypeDataObjec,AnyTypeDataObjec又是什么意思呢?找不到类型?对了!为什么找不到类型呢,明明指定了相应的namespace,莫非。。。?还是检验下为好,额。。。
就多出一个"/"。。。
通过这个例子,发觉创建的DO是通过namespace来定位对象的类型,而且xsd中的tns和targetnamespace的值是相同的,当namespace写错了,找不到类型也就不足为怪了!
分享到:
相关推荐
META-INF/MANIFEST.MF commonj.sdo.ChangeSummary.class commonj.sdo.DataGraph.class commonj.sdo.DataObject.class commonj.sdo.helper.CopyHelper.class commonj.sdo.helper.DataFactory.class commonj.sdo....
commonj.sdo.ChangeSummary.class commonj.sdo.DataGraph.class commonj.sdo.DataObject.class commonj.sdo.helper.CopyHelper.class commonj.sdo.helper.DataFactory.class commonj.sdo.helper.DataHelper.class ...
SDO_SDO的JAVA实现规范_V2.1.0
如果 SDO_SRID 不为 NULL,则必须包含 MDSYS.CS_SRS 表中 SRID 列中的某一个值。 3. SDO_POINT 属性 SDO_POINT 属性是使用 SDO_POINT_TYPE 对象类型定义的。当 SDO_ELEM_INFO 和 SDO_ORDINATES 都为 NULL 时,SDO_...
简单示例实现如何为Oracle中sdo_geometry字段创建空间索引
PDO SDO应用实例分析,让人茅塞顿开! PDO(PHP Data Objects)是一种基于 PHP 的数据访问对象模型,提供了一个统一的接口来访问不同的数据库管理系统。SDO(Service Data Objects)是一种基于 Service-Oriented ...
以简单的实例,透彻讲解SDO的收发过程。同济大学。
从工作流向角度看CANopen的SDO功能
SDO Service Data Object Spec
SDO的JAVA实现规范,SDO2.1版规范,中文版。
SDO详细文档,详细介绍了如何让使用SDO。对于初学者而言值得一看。
Shp2sdo插件,shp文件通过shp2sdo插件导入到oracle
SDO_SDO的JAVA实现规范_V2.1.0(中文版.pdf
一个可运行的web项目,包括SDO对象的创建、SDO对象在SCA组件中传输的示例,示例很好地展示了SDO与SCA的结合。...注,SDO使用2.1版本,项目中不包含依赖的jar,可以讲SDO-2.1版本中的jar拷贝到web项目中。
SDO是soq的一个标准,对sao的概述等
SDO(Service Data Object)为我们提供了统一的数据应用开发框架,它提供了对多种企业信息系统 (EIS) 的统一的数据访问,包括数据库、遗留应用程序(使用 JCA)、XML 或者是 Web服务数据源。通过使用 SDO 的一种独特而...
Service Data Objects (SDO)开发指南
Oracle数据库对sdo_geometry空间坐标进行转换
SDO学习实例,不包含jar包,jar需另外下载,资源类表中有。
Tuscany-SDO-学习笔记