Hi Xinjun,

On 1/11/07, Xinjun Chen <[EMAIL PROTECTED]> wrote:
Hi Ruchith,

setNamespaceAware to the original DocumentBuilderFactory solve the problem
partially.

Now the DOM Element reads:
<?xml version="1.0"
  encoding="UTF-8"?>
<getHearingDetailsByCaseNoWSReturn xmlns="http://cis.com";>
    <hearingDetailsVO xmlns="http://vo.cis.com";>
      <duration/>
      <applicationNo>sAppNo0</applicationNo>
    </hearingDetailsVO>
</getHearingDetailsByCaseNoWSReturn>

But the OMElement reads:

<getHearingDetailsByCaseNoWSReturn xmlns="">
    <hearingDetailsVO xmlns="http://vo.cis.com";>
      <duration/>
      <applicationNo>sAppNo0</applicationNo>
    </hearingDetailsVO>
</getHearingDetailsByCaseNoWSReturn>

IMHO the issue here is with the XMLUtils#outputDOM() method :-)

It doesn't serialize the root element's namespaces properly.

Please see here [1]


Observations:
1. After I setNamespaceAware to the original DOM DocumentBuilderFactory, the
inner element <hearingDetailsVO> gets correct namespace. But root element
<getHearingDetailsByCaseNoWSReturn> does not. The namespace
of <getHearingDetailsByCaseNoWSReturn> is lost. I created
this element in the following way:

DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = dbf.newDocumentBuilder().newDocument();
Element root = doc.createElementNS(" http://cis.com";,
"getHearingDetailsByCaseNoWSReturn");

I think OMElement does not include "http://cis.com"; as namespace because
"http://cis.com"; is not explicitly declared as a namespace in DOM doc. I
searched the interfaces of Document and Element, but cannot find a way to
explicitly declare a namespace.
I think I need to treat namespace as attribute in DOM. Please correct me if
I am wrong.

Thus I added one line to declare xmlns as attribute.

root.setAttribute("xmlns", "http://cis.com";).

Is there any other elegant way?


2. Do you have a good way to remove all null elements like <duration/>? The
original DOM Element also contains other null elements which contains no
value.

Hmm ... I'm sorry I don't know any shortcut to do that.

Thanks,
Ruchith

[1] http://rafb.net/p/dXERq036.html
--
www.ruchith.org
www.wso2.org

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

Reply via email to