[ 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to