SDOのAnyType DataObjecの値が取れない問題

3269 ワード

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