axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eran Chinthaka 2 (JIRA)" <j...@apache.org>
Subject [jira] Assigned: (AXIS2-3155) AXIOM writes out duplicate default namespace declarations
Date Sun, 18 Nov 2007 04:41:43 GMT

     [ https://issues.apache.org/jira/browse/AXIS2-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Eran Chinthaka 2 reassigned AXIS2-3155:
---------------------------------------

    Assignee: Eran Chinthaka 2

> AXIOM writes out duplicate default namespace declarations
> ---------------------------------------------------------
>
>                 Key: AXIS2-3155
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3155
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: om
>    Affects Versions: 1.3
>         Environment: Microsoft Windows 2003 Server, Java 1.5.0_11.  Axis2 version 1.3
(uses AXIOM version 1.2.5).
>            Reporter: Yechiel Mondrowitz
>            Assignee: Eran Chinthaka 2
>             Fix For: 1.3
>
>
> When there is a default namespace declaration in a parent node, it seems that AXIOM repeats
that default namespace declaration for every child node.  So if this piece of XML, with a
default namespace in the <outerTag> is fed to AXIOM:
> <outerTag xmlns="http://someNamespace">
>     <innerTag>
>         <node1>Hello</node1>
>         <node2>Hello</node2>
>    </innerTag>
> </outerTag>
> What AXIOM returns is this:
> <outerTag xmlns="http://someNamespace">
>     <innerTag xmlns="http://someNamespace">
>         <node1 xmlns="http://someNamespace">Hello</node1>
>         <node2 xmlns="http://someNamespace">Hello</node2>
>    </innerTag>
> </outerTag>
> While this may be valid XML, it doubles or triples the size of the XML.  With large XML
results, this can mean serious performance issues, as double or triple the bandwith is needed
to transport it across the wire.  This only appears to happen when the OMElement has not yet
been built in memory, but is still in the stream.  After it is already built, the problem
goes away.  So this problem only occurs if toStringWithConsume(), or serializeAndConsume()
is called on the OMElement.  When toString() is called however, the resulting XML is fine.
 Here is a small program to illustrate:
> import org.apache.axiom.om.*;
> import org.apache.axiom.om.impl.llom.util.*;
> public class Test1 {
>     public static void main(String [] args) {
>         try {
>             String xmlString =
>                 "<outerTag xmlns=\"http://someNamespace\">" +
>                     "<innerTag>" +
>                         "<node1>Hello</node1>" +
>                         "<node2>Hello</node2>" +
>                    "</innerTag>" +
>                 "</outerTag>";
>             OMElement elem = AXIOMUtil.stringToOM(xmlString);
>             System.out.println("--- Calling toStringWithConsume() ---\n");
>             System.out.println(elem.toStringWithConsume());
>             xmlString =
>                 "<outerTag xmlns=\"http://someNamespace\">" +
>                     "<innerTag>" +
>                         "<node1>Hello</node1>" +
>                         "<node2>Hello</node2>" +
>                    "</innerTag>" +
>                 "</outerTag>";
>             elem = AXIOMUtil.stringToOM(xmlString);
>             System.out.println("\n--- Calling toString() ---\n");
>             System.out.println(elem.toString());
>         }
>         catch(Exception e) {
>             e.printStackTrace();
>         }
>     }
> }
> The output of this program is this (I added line breaks in the XML for easier readability):
> --- Calling toStringWithConsume() ---
> <outerTag xmlns="http://someNamespace">
>     <innerTag xmlns="http://someNamespace">
>         <node1 xmlns="http://someNamespace">Hello</node1>
>         <node2 xmlns="http://someNamespace">Hello</node2>
>     </innerTag>
> </outerTag>
> --- Calling toString() ---
> <outerTag xmlns="http://someNamespace">
>     <innerTag>
>         <node1>Hello</node1>
>         <node2>Hello</node2>
>     </innerTag>
> </outerTag>
> I consider this a very big problem for me, because we return very large XML results,
and this bloats the XML tremendously.  I had to refrain from using default namespaces because
of this.  I really hope this can be corrected in time for the next release of Axis2 / AXIOM.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message