You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xerces.apache.org by Anthony Dodd <An...@synergy-fs.com> on 2000/04/03 09:48:29 UTC
XMLSerializer and Namespaces
Hi
I'm currently developing a web based application which needs to be able to
transmit the contents of an XML Document (Built using Xerces 3.0.1) via HTTP
to web application server. The document I want to send should have the
following structure.
<soap:Envelope xmlns:soap="Some-Namespace-URI">
<soap:Body>
<t:get xmlns:t="Someother-Namespace-URI">
<t:element1/>
</t:get>
</soap:body>
</soap:Envelope>
I've attempted to create this document using the following java code. I'm
making no assumptions that the following code is correct, so any guidelines
would be really useful.
//Create a new document with given Namespace & Qualified
name
org.w3c.dom.Document doc =
dom.createDocument("Some-Namespace-URI","soap:Envelope",null);
//Create the Body element
org.w3c.dom.Element body =
doc.createElementNS("Some-Namespace-URI", "soap:Body");
doc.getDocumentElement().appendChild(body);
//Create the get element
org.w3c.dom.Element tget =
doc.createElementNS("Someother-Namespace-URI", "t:get");
body.appendChild(tget);
//Create the element1 element
org.w3c.dom.Element element1 =
doc.createElementNS("Someother-Namespace-URI", "t:element1);
tget.appendChild(element1);
When I use the Xerces serializer via the XMLSerializer implementation, the
following code snippet shows how I created and invoked the serializer.
XMLSerializer serializer = new XMLSerializer(System.out, new
OutputFormat(doc2));
serializer.serialize(doc2);
serializer.flush();
this produces the following output
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope><soap:Body><t:get><t:element1/></t:get></soap:Body></soap:Env
elope>
which does not exactly resemble the original document. Is the Xerces
serializer compliant with DOM Level 2, can it recognise the namespaces and
reproduce them in the serialized output. If any body got a solution to this
problem I'd be most grateful.
Thanks
Anthony Dodd
Re: XMLSerializer and Namespaces
Posted by Arkin <ar...@exoffice.com>.
The DOMSerializer is DOM Level 1, namespace support requires DOM Level
2. We need to figure out a way to support both in the same serializer,
or only support DOM Level 2, which might break some existing
implementations.
For SAX, 1 and 2 use different interfaces so this was never a problem.
arkin
Anthony Dodd wrote:
>
> Hi
>
> I'm currently developing a web based application which needs to be able to
> transmit the contents of an XML Document (Built using Xerces 3.0.1) via HTTP
> to web application server. The document I want to send should have the
> following structure.
>
> <soap:Envelope xmlns:soap="Some-Namespace-URI">
> <soap:Body>
> <t:get xmlns:t="Someother-Namespace-URI">
> <t:element1/>
> </t:get>
> </soap:body>
> </soap:Envelope>
>
> I've attempted to create this document using the following java code. I'm
> making no assumptions that the following code is correct, so any guidelines
> would be really useful.
>
> //Create a new document with given Namespace & Qualified
> name
> org.w3c.dom.Document doc =
> dom.createDocument("Some-Namespace-URI","soap:Envelope",null);
>
> //Create the Body element
> org.w3c.dom.Element body =
> doc.createElementNS("Some-Namespace-URI", "soap:Body");
> doc.getDocumentElement().appendChild(body);
>
> //Create the get element
> org.w3c.dom.Element tget =
> doc.createElementNS("Someother-Namespace-URI", "t:get");
> body.appendChild(tget);
>
> //Create the element1 element
> org.w3c.dom.Element element1 =
> doc.createElementNS("Someother-Namespace-URI", "t:element1);
> tget.appendChild(element1);
>
> When I use the Xerces serializer via the XMLSerializer implementation, the
> following code snippet shows how I created and invoked the serializer.
>
> XMLSerializer serializer = new XMLSerializer(System.out, new
> OutputFormat(doc2));
> serializer.serialize(doc2);
> serializer.flush();
>
> this produces the following output
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <soap:Envelope><soap:Body><t:get><t:element1/></t:get></soap:Body></soap:Env
> elope>
>
> which does not exactly resemble the original document. Is the Xerces
> serializer compliant with DOM Level 2, can it recognise the namespaces and
> reproduce them in the serialized output. If any body got a solution to this
> problem I'd be most grateful.
>
> Thanks
> Anthony Dodd
--
----------------------------------------------------------------------
Assaf Arkin www.exoffice.com
CTO, Exoffice Technologies, Inc. www.exolab.org