SDOのAnyType DataObjecの値が取れない問題
一つのschemaの例からDOを構築すると、次のような面白い問題が発見されました。
印刷の結果:
なぜですか?私が作ったのはReceive Orderタイプなのに、確かにAnyType Data Objec、AnyType Data Objecとはどういう意味ですか?タイプが見つかりませんか?そうだどうしてタイプが見つからないですか?対応するnamespaceを指定したのに。やはり検査したほうがいいです。
一つだけ多く出ます。
この例を通して、作成したDOはnamespaceによって対象を特定するタイプであり、xsdのtnsとtagetnamespaceの値は同じであることが分かりました。namespaceが間違っていたら、タイプが見つからなくてもおかしくないです。
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)]
なぜですか?私が作ったのはReceive Orderタイプなのに、確かにAnyType Data Objec、AnyType Data Objecとはどういう意味ですか?タイプが見つかりませんか?そうだどうしてタイプが見つからないですか?対応するnamespaceを指定したのに。やはり検査したほうがいいです。
一つだけ多く出ます。
この例を通して、作成したDOはnamespaceによって対象を特定するタイプであり、xsdのtnsとtagetnamespaceの値は同じであることが分かりました。namespaceが間違っていたら、タイプが見つからなくてもおかしくないです。