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