Hi Xinjun,

How did u create the DOM element that is to be converted to OM? If you
read it from a file you MUST make sure you the DocumentBuilderFactory
instance that you use to create the DocumentBuilder instance that
parses the xml is *namspaceAware*.

Please see here[1] for an example.

Thanks,
Ruchith

[1] http://rafb.net/p/DDc2NH37.html


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


--
www.ruchith.org
www.wso2.org

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

Reply via email to