Maybe your string xml is not right,it should include "<?xml version="1.0" encoding="UTF-8"?>" element.
At 2010-12-13 14:30:52,ext2 <[email protected]> wrote: >Hi: >If I convert a xml to sdo which stand for a xsd's global element; >The Tuscany SDO always ask for me to using string , and cannot using >DOMSource. >If I using DOMSource, the Tuscany cannot aware to the xml element's type, so >the converted SDO's type is not correct, it will always be ANYTYPE; > This means I must convert DOM to String first, then convert String >to SDO, this waste performance; > >I illustrate the bug , using following code, schema and xml: > >Schema: targetNamespace="http://test/sometype" ><xs:element name="st1E" type="ns:ST1"/> ><xs:complexType name="ST1"> > <xs:sequence> > <xs:element name="a1" type="xs:string"/> > </xs:sequence> ></xs:complexType> > >XML: defined by the global element {http://test/sometype}st1E ><st1E xmlns="http://test/sometype"><a1>test</a1></st1E> > >The Source code: > //the global element's xml > String xml="<st1E >xmlns=\"http://test/sometype\"><a1>test</a1></st1E>"; > DataObject o = context.getXMLHelper().load(xml).getDataObject(); > //loading string as SDO is correctly, so the assert is passed; > assertTrue(o.getType().getURI().equals(xsd_namespace)); > > > //here I using DocumentBuilder to convert string to w3c Element; > Element e = DOMUtil.string2DOM(xml) > DataObject o = context.getXMLHelper().load(new DOMSource(e), null, >null).getDataObject(); > //loaded SDO's type is AnyType, not the schema defined type; so the >assertion will failure; > Try{assertTrue(o.getType().getURI().equals(xsd_namespace)); >}catch(){} > > //finally I convert the Element back to string and reload it using >xml helper , the sdo is also correctly; > String s1 = DOMUtil.dom2String(e);//here I using a xsl transformer >to convert element back to string; > DataObject o = context.getXMLHelper().load(xml).getDataObject(); > > //re-loading string as SDO is also correctly, so the assert is >passed; > assertTrue(o.getType().getURI().equals(xsd_namespace)); > > > >
