[ https://issues.apache.org/jira/browse/AXIS2-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12543342 ]
Eran Chinthaka 2 commented on AXIS2-3155: ----------------------------------------- This seems to be fixed in the code in latest svn. Can you please check again? > 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 > 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]