Thanks for that, Cezar, don't know why I assumed they were analogous.

So is it a really wasteful operation to create a stream from the String
returned by xmlText()? My issue is that I was trying to hide the use of
XmlBeans from any other classes that needed the document, so plumped for
an XmlStreamReader as the StAXOMBuilder class had a constructor that
could use that. The other constructor on StAXOMBuilder takes an
InputStream which means I need to produce an InputStream from my
XmlObject. What's the most efficient way of doing this?

Thanks
Gordon

-----Original Message-----
From: Cezar Andrei [mailto:[EMAIL PROTECTED] 
Sent: 24 September 2008 17:59
To: user@xmlbeans.apache.org
Subject: RE: XMLStreamReader namespace handling

Gordon,

The two methods are not designed to return exactly the same info. While
xmlText() has to always return a valid XML document with more flexible
options, the newXMLStreamReader() is designed for speed to transfer the
contents of the XML store.

Cezar

> -----Original Message-----
> From: Gordon Rogers [mailto:[EMAIL PROTECTED]
> Sent: Monday, September 22, 2008 5:24 AM
> To: user@xmlbeans.apache.org
> Subject: XMLStreamReader namespace handling
> 
> Hi
> 
> I am using XMLBeans version 2.1.0 and have got a question about how
the
> XMLStreamReader handles namespaces and in particular why the semantics
> used by the newXMLStreamReader() method and  the xmlText() method are
> different when passed the same set of XmlOptions. This is best
> illustrated by an example:
> 
>       Map ns = new HashMap();
>       ns.put( EBXML_NAMESPACE_URI, EBXML_NAMESPACE_PREFIX );
> 
>       XmlOptions xmlOptions = new XmlOptions();
>       xmlOptions.setSaveOuter();
>       xmlOptions.setSaveSuggestedPrefixes( ns )
> 
> xmlOptions.setSaveAggressiveNamespaces().setSaveImplicitNamespaces( ns
> );
> 
>       MessageHeaderDocument messageHeaderDocument =
> MessageHeaderDocument.Factory.newInstance();
>       MessageHeaderDocument.MessageHeader messageHeader =
> messageHeaderDocument.addNewMessageHeader();
>       messageHeader.setVersion( "2.0" );
>       FromDocument.From from = messageHeader.addNewFrom();
>       PartyIdDocument.PartyId fromPartyId = from.addNewPartyId();
>       fromPartyId.setType(
"urn:nhs:names:partyType:ocs+serviceInstance"
> );
>       fromPartyId.setStringValue( "from_party_key" );
> 
>       ...
> 
> The output from the messageHeaderDocument.xmlText( xmlOptions ) looks
> like:
> <eb:MessageHeader
>
xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-head
> er-2_0.xsd" eb:version="2.0">
>       <eb:From>
>               <eb:PartyId
>
eb:type="urn:nhs:names:partyType:ocs+serviceInstance">from_party_key</eb
> :PartyId>
>       </eb:From>
> </eb:MessageHeader>
> 
> The output from messageHeaderDocument.newXMLStreamReader( xmlOptions )
> looks like:
> 
> <MessageHeader
>
xmlns="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-
> 2_0.xsd"
> 
>
xmlns:axis2ns1="http://www.oasis-open.org/committees/ebxml-msg/schema/ms
> g-header-2_0.xsd"
>                       axis2ns1:version="2.0">
>       <From>
>               <PartyId
>
xmlns:axis2ns2="http://www.oasis-open.org/committees/ebxml-msg/schema/ms
> g-header-2_0.xsd"
> 
>
axis2ns2:type="urn:nhs:names:partyType:ocs+serviceInstance">from_party_k
> ey</PartyId>
>       </From>
> </MessageHeader>
> 
> As you can see the namespaces, whilst valid, have not been prefixed
> correctly or managed aggressively when using the XMLStreamReader
> approach. Does this seem like odd behaviour or is this expected? From
> looking at the 2.1.0 source the only options newXMLStreamReader() pays
> attention to are saveInner and saveOuter, why is this?
> 
> I am writing an object that is a wrapper round an XmlObject and want
to
> expose an XMLStreamReader as part of that interface, but due to this
> namespacing issue I'm considering exposing an InputStream instead,
based
> on the String returned from the xmlText() method. This seems a bit
hacky
> and I'm also concerned that it's not going to be the most efficient.
I'm
> using the result of that method as the input to a StAXOMBuilder so
that
> I can generate AXIOM classes for use in an axis 2 request. Has anyone
> used a similar approach?
> 
> Thanks in advance for any help with this.
> 
> Gordon
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


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


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

Reply via email to