Xinjun
Does the namespace really have a leading space as in your email? Maybe
there is a bug in how that is parsed by StAX?
Paul
On 1/10/07, Xinjun Chen <[EMAIL PROTECTED]> wrote:
I believe conversion between DOM Element and OMElement is quite general.
Could anyone suggest a good way to do the conversions correctly?
On 1/10/07, Xinjun Chen <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I am trying to convert a DOM Element to OMElement using the following toOM
code in org.apache.axis2.security.util.Axis2Util.
>
> public static OMElement toOM(Element element) throws Exception {
> try {
> org.apache.xml.security.Init.init();
> ByteArrayOutputStream os = new ByteArrayOutputStream();
> XMLUtils.outputDOM (element, os, true);
>
> ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
> XMLStreamReader reader =
XMLInputFactory.newInstance().createXMLStreamReader(is);
>
> StAXOMBuilder builder = new StAXOMBuilder(reader);
> builder.setCache(true);
> return builder.getDocumentElement();
> } catch (XMLStreamException e) {
> log.fatal(e.getMessage(), e);
> throw new Exception("Error when converting from DOM Element to OM.");
> }
>
> There are two problems with the code:
> 1. I must add the bolded line in the toOM() method.
> 2. This method seems not deal with namespace correctly.
>
> My original DOM Element is as follows:
> <?xml version="1.0"
encoding="UTF-8"?><getHearingDetailsByCaseNoWSReturn
xmlns="
http://cis.com"><hearingDetailsVO><duration/><applicationNo>sAppNo0</applicationNo></hearingDetailsVO></getHearingDetailsByCaseNoWSReturn
>
>
> But when I use the method to convert the DOM Element into OMElement, it
reads:
>
<getHearingDetailsByCaseNoWSReturn><hearingDetailsVO><duration
/><applicationNo>sAppNo0</applicationNo></hearingDetailsVO></getHearingDetailsByCaseNoWSReturn>
>
> It seems that the namespace is ignored by the Axis2Util.toOM().
>
> After I add the OMElement to a SOAPEnvelope using the following code,
every element is qualified with "" namespace which is unexpected.
>
> SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
> SOAPEnvelope envelope = fac.getDefaultEnvelope();
> OMElement om = Axis2Util.toOM((Element)retNode);
> envelope.getBody().addChild(om);
>
> /*******************************
> Result SOAPEnvelope
> *******************************/
> <?xml version='1.0' encoding='utf-8'?>
> <soapenv:Envelope
> xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Header />
> <soapenv:Body>
> <getHearingDetailsByCaseNoWSReturn xmlns="">
> <hearingDetailsVO xmlns="">
> <duration xmlns="" />
> <applicationNo xmlns="">sAppNo0</applicationNo>
> </hearingDetailsVO>
> </getHearingDetailsByCaseNoWSReturn>
> </soapenv:Body>
> </soapenv:Envelope>
>
>
> Could anyone tell me how can I solve the problems?
>
>
> Regards,
> Xinjun
--
Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
http://bloglines.com/blog/paulfremantle
[EMAIL PROTECTED]
"Oxygenating the Web Service Platform", www.wso2.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]