Hi Ruchith,

Thanks for the info.
I think the codes mentioned in [1] has the same effect as root.setAttribute().


Regards,
Xinjun

On 1/12/07, Ruchith Fernando <[EMAIL PROTECTED]> wrote:

Hi Xinjun,

To make sure you have the namespace declaration properly you have to
add the namespace attribute. Please see here [1].

Thanks,
Ruchith

[1]
http://www.ftponline.com/javapro/2003_06/online/namespace_kjones_06_23_03/

On 1/12/07, Ruchith Fernando <[EMAIL PROTECTED]> wrote:
> 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
>


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

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


Reply via email to