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<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