The place that suggested you use AResponseType to parse was correct,
because that is the type that contains the <bData> element. Always, the
declared content of the type that is used to parse an XML document has
to match the actual elements being parsed.

The way <xml-fragment> works is that it allows you to parse content that
would otherwise be invalid XML. You can parse fragments with multiple
root elements or even attributes by themselves. By wrapping everything
with an <xml-fragment> element, the XML parser won't reject it as
not-well-formed XML and then XMLBeans will know to remove the extra
element before processing.

So I will be interested to know in more detail why the recommendation to
use AResposeType did not work for you, maybe a Schema snippet, a code
snippet etc. (There could be things like namespace mismatches etc which
can't be diagnosed without having the details available)

Radu

> -----Original Message-----
> From: Jim the Standing Bear [mailto:[EMAIL PROTECTED] 
> Sent: Saturday, April 26, 2008 5:30 PM
> To: user@xmlbeans.apache.org
> Subject: another xml fragment parse question
> 
> Hello,
> 
> Not so long ago someone asked a question about parsing xml fragment.
> I am also running into some issues with parsing XML fragments 
> and would like to get some clarifications from you experts.
> 
> The xmlBeans I am working with is structured like this:
> 
> AResponseDocument  -->  AResponseType  -->  BDataType  -->  (choice of
> either)  CType[0..*]   (or)  DType[0..*]
> 
> In other words (if my illustrations above wasn't clear 
> enough), I am getting a response document back from some web 
> service call, and the response contains a BDataType object, 
> which in turn contains an array of CType objects or an array 
> of DType objects.
> 
> Currently, only CType is used.
> 
> The problem I ran into is that sometimes, I have to parse an 
> input stream of characters into a BDataType, and a typical 
> stream looks like the following:
> <typ1:bData xmlns:typ1="...">
>   <typ1:c>
>      ... some stuff here ...
>   </typ1:c>
> </typ1:bData>
> 
> However, when I tried to do this
> 
> BDataType bdt = BDataType.Factory.parse(inputStream);
> 
> it did not parse correctly, because
> 
> System.out.println(bdt.getCList().size());
> 
> gives me 0, and I was expecting 1 since there is always a "c" 
> element present in the data stream
> 
> Is this because the data stream I am getting is missing the 
> <xml-fragment> tags??
> 
> I printed bdt.xmlText() from an actual BDataType object, and 
> noticed the xmlText is surrounded by <xml-fragment> tags.  
> When I tried to parse that xml text, it actually worked.
> 
> One obvious solution for me right now, would be to grab the 
> inputStream and store it into a string, surround it by the 
> <xml-fragment> tags, and then call BDataType.Factory.parse(string)...
> but I would prefer to avoid converting the input stream to a string.
> A place online suggests that one should always parse from 
> "one level up", but when I tried this:
> 
> AResponseType art = AResponseType.Factory.parse(inputStream)
> 
> I get a null pointer exception when I say
> 
> art.getBDataType();
> 
> 
> So is there any other way???  Thanks!
> 
> -- Jim
> 
> 
> 
> 
> 
> --
> --------------------------------------
> Standing Bear Has Spoken
> --------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

Notice:  This email message, together with any attachments, may contain 
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated 
entities,  that may be confidential,  proprietary,  copyrighted  and/or legally 
privileged, and is intended solely for the use of the individual or entity 
named in this message. If you are not the intended recipient, and have received 
this message in error, please immediately return this by email and then delete 
it.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to