You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by Paul Grillo <Pa...@trivininc.com> on 2006/02/03 16:52:26 UTC
XmlObject.parse xmlFragment workaround?
I have been having problems parsing incoming xml for my XMLBeans object.
The classes were generated from XSD Schemas.
XMLObjec Class Name: VinDecodeRequest
If I populate it and issue oVinDecodeRequest.save(...) it produces the
following xml. It places <xml-fragment> where normally integrated with
our SOA system the xml-fragment tag is replaced with the the pair of
tags:
<VinDecodeRequest xmlns="http://vindecode.servicebeans.trivin.com">
</VinDecodeRequest>
The input xml below parses:
<?xml version="1.0" encoding="UTF-8"?>
<xml-fragment>
<vin:ProductID
xmlns:vin="http://vindecode.servicebeans.trivin.com">100</vin:ProductID>
<vin:Fields xmlns:vin="http://vindecode.servicebeans.trivin.com">
<com:Field
xmlns:com="http://common.servicebeans.trivin.com">
<com:Name>VIN</com:Name>
<com:Value>4F4YR12U63TM07491</com:Value>
</com:Field>
</vin:Fields>
</xml-fragment>
The input xml does not parse:
<?xml version="1.0" encoding="UTF-8"?>
<VinDecodeRequest xmlns="http://vindecode.servicebeans.trivin.com
<http://vindecode.servicebeans.trivin.com/> ">
<vin:ProductID
xmlns:vin="http://vindecode.servicebeans.trivin.com">100</vin:ProductID>
<vin:Fields xmlns:vin="http://vindecode.servicebeans.trivin.com
<http://vindecode.servicebeans.trivin.com/> ">
<com:Field xmlns:com="http://common.servicebeans.trivin.com
<http://common.servicebeans.trivin.com/> ">
<com:Name>VIN</com:Name>
<com:Value>4F4YR12U63TM07491</com:Value>
</com:Field>
</vin:Fields>
</VinDecodeRequest>
The ONLY way i seem to be able to read in XML and create the appropriate
VinDecodeRequest object is if the XML i'm reading in actually "contains"
<xml-fragment> tags. How can i XmlObject.parse to properly parse the
incoming XML
The code i use is fairly straight forward, i set the schematype to the
appropriate class
XmlOptions opts = new XmlOptions();
SchemaType type =
XmlBeans.typeForClass(com.trivin.servicebeans.vindecode.VinDecodeRequest
.class);
opts.setDocumentType(type);
XmlObject obj =
XmlObject.Factory.parse(res.getInputStream(),opts);
Is there a simple workaround or explanation? I simply need to be able
to parse that second set of XML.
thanks for any help or advice.