You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by Alex Paransky <ap...@standardset.com> on 2004/03/19 04:44:06 UTC
Wrapping xml-fragment into AnyDocument looses runtime type information
I posted this message on the Bea newsgroup, but I think most of the
action is here anyway...
I would like to store a fragment of xml in a database. However, to stay
XML compatible, I don't want to have <xml-fragment> tags. To avoid this,
I attempt to "wrap" the xml-fragment inside of an AnyDocument using the
following code:
private static AnyDocument wrap(final XmlObject o) {
final AnyDocument anyDocument = AnyDocument.Factory.newInstance();
final AnyDocument.Any any = anyDocument.addNewAny();
any.set(o);
return anyDocument;
}
The problem, is that somehow my runtime type is getting lost after the
wrapping occurs.
Here is how the data looks BEFORE wrap (o.save()):
<?xml version="1.0" encoding="UTF-8"?>
<xml-fragment
xsi:type="loc:AddTermRequestT"
xmlns:loc="http://www.overture.com/service/common/local"
<http://www.overture.com/service/common/local>
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
<http://schemas.xmlsoap.org/soap/envelope/>
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
<http://schemas.xmlsoap.org/soap/encoding/>
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
<http://www.w3.org/2001/XMLSchema>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<http://www.w3.org/2001/XMLSchema-instance>
xmlns:dis="http://www.overture.com/service/display"
<http://www.overture.com/service/display>
> <http://www.overture.com/service/display>
<loc:accountId>1123223ZZZ</loc:accountId>
<loc:term>dog</loc:term>
<loc:price>0.55</loc:price>
</xml-fragment>
Note that in the above XML the runtime type is set as:
xsi:type="loc:AddTermRequestT
Here is how the data looks after I attempt to wrap it with AnyDocument:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:any
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
<http://schemas.xmlsoap.org/soap/envelope/>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<http://www.w3.org/2001/XMLSchema-instance>
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
<http://schemas.xmlsoap.org/soap/encoding/>
xmlns:dis="http://www.overture.com/service/display"
<http://www.overture.com/service/display>
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
<http://www.w3.org/2001/XMLSchema>
xmlns:loc="http://www.overture.com/service/common/local"
<http://www.overture.com/service/common/local>
> <http://www.overture.com/service/common/local>
<loc:accountId>1123223ZZZ</loc:accountId>
<loc:term>dog</loc:term>
<loc:price>0.55</loc:price>
</xsd:any>
The runtime type (xsi:type="loc:AddTermRequestT) is gone and it's not
clear how to parse the new XML.
Am I doing something wrong? Why does the runtime type go away? Is this
the correct way to "warp" some fragment with a valid document.
Again, the intent here is to store something to the database that a
different tool can understand later.
Thanks.
--
-AP_
http://www.myprofiles.com/member/profile/apara_personal
http://www.myprofiles.com/member/profile/apara_business
- ---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-user-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-user-help@xml.apache.org
Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/