<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Katja,</div><div><br></div><div>What you describe is scary and I noticed nothing of that.</div><div>Could you make your test-case a bit more easy to reproduce? (the styled text below is not nice to copy, the xml files are missing).</div><div><br></div><div>Posting it all on the web, e.g. as a zip, would help.</div><div>I see that jdom doesn't have a bug tracker, if you prefer such a method, you can happily post this in our bug-tracker (jira.activemath.org, project activemath, component omdocjdom). Maybe we can even discuss a jdom project there.</div><div><br></div><div>paul</div><div><br></div><br><div><div>Le 01-sept.-08 à 09:49, <a href="mailto:katja.radelicki@colruyt.be">katja.radelicki@colruyt.be</a> a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><b><font color="#7f0055" size="2"><div>&nbsp;<br class="webkit-block-placeholder"></div></font><font size="2">I read&nbsp;the same&nbsp;file using jdom 1.0 and jdom 1.1<br>a file of 25Mb&nbsp;is&nbsp;parsed in 9 seconds with jdom 1.0 and with jdom 1.1 in 5 minutes.<br>a file of 73Mb&nbsp;is&nbsp;parsed in&nbsp;44 seconds with jdom 1.0 and with jdom 1.1 in&nbsp;47 minutes!</font><b><font color="#7f0055" size="2"><p align="left">I only changed the jar files. The code is the same, but the duration increased with a factor 60.<br>Can someone tell me why? <br>Thanks a lot.<br><br>import</p></font><font size="2">java.io.FileInputStream;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">java.io.InputStream;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">java.util.ArrayList;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">java.util.Calendar;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">java.util.Iterator;</font><b><font color="#7f0055" size="2"><p align="left">import</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div></font><font size="2">java.util.List;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">org.jdom.Document;</font><b><font color="#7f0055" size="2"><p align="left">import</p></font><font size="2">org.jdom.Element;</font><b><font color="#7f0055" size="2"><p align="left">import</p><div>&nbsp;<br class="webkit-block-placeholder"></div></font><font size="2">org.jdom.input.SAXBuilder;</font><b><font color="#7f0055" size="2"><div>&nbsp;<br class="webkit-block-placeholder"></div></font><font size="2">&nbsp;</font><b><font color="#7f0055" size="2"><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div></font><font size="2">&nbsp;</font><b><font color="#7f0055" size="2"><p align="left">public</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left"><b><font color="#7f0055" size="2">public</font><font size="2"> </font><b><font color="#7f0055" size="2">static</font><font size="2"> </font><b><font color="#7f0055" size="2">void</font><font size="2"> main(String[] args) {</font></b></b></b></p><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left"><font size="2">SAXBuilder saxBuilder=</font><b><font color="#7f0055" size="2">new</font><font size="2"> SAXBuilder(</font><b><font color="#7f0055" size="2">false</font><font size="2">);</font><b><font color="#7f0055" size="2">try</font><font size="2">{</font><b><font color="#7f0055" size="2">new</font><font size="2"> FileInputStream(</font><font color="#2a00ff" size="2">"C:/catalogueDOM36.xml"</font><font size="2">); <br></font><font size="2">System.</font><i><font color="#0000c0" size="2">out</font><font size="2">.println(</font><font color="#2a00ff" size="2">"min: "</font><font size="2">+Calendar.<i>getInstance</i>().get(Calendar.</font><i><font color="#0000c0" size="2">MINUTE</font><font size="2">)+</font><font color="#2a00ff" size="2">" sec: "</font><font size="2">+Calendar.<i>getInstance</i>().get(Calendar.</font><i><font color="#0000c0" size="2">SECOND</font><font size="2">));</font><font size="2"><i>readXMLFileWithJDom</i>(jdomDocument);</font><i><font color="#0000c0" size="2">out</font><font size="2">.println(</font><font color="#2a00ff" size="2">"min: "</font><font size="2">+Calendar.<i>getInstance</i>().get(Calendar.</font><i><font color="#0000c0" size="2">MINUTE</font><font size="2">)+</font><font color="#2a00ff" size="2">" sec: "</font><font size="2">+Calendar.<i>getInstance</i>().get(Calendar.</font><i><font color="#0000c0" size="2">SECOND</font><font size="2">));</font><b><font color="#7f0055" size="2">catch</font><font size="2"> (Exception e) {</font></b></i></i></i></i></i></i></b></b></b></b></p><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">InputStream input=</p><p align="left">Document jdomDocument= saxBuilder.build(input);</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">System.</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">}</p><p align="left">e.printStackTrace();</p><p align="left">}</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">}</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left"><b><font color="#7f0055" size="2">public</font><font size="2"> </font><b><font color="#7f0055" size="2">static</font><font size="2"> </font><b><font color="#7f0055" size="2">void</font><font size="2"> readXMLFileWithJDom(org.jdom.Document jdomDocument){</font></b></b></b></p><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">Element catalogueElement=jdomDocument.getRootElement();</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">Catalogue catalogue=<i>readCatalogueElement</i>(catalogueElement);</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div>}<div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left"><b><font color="#7f0055" size="2">public</font><font size="2"> </font><b><font color="#7f0055" size="2">static</font><font size="2"> Catalogue readCatalogueElement(Element element){</font><b><font color="#7f0055" size="2">new</font><font size="2"> Catalogue();</font><b><font color="#7f0055" size="2">if</font><font size="2">(children !=</font><b><font color="#7f0055" size="2">null</font><font size="2">){</font><b><font color="#7f0055" size="2">while</font><font size="2"> (iterator.hasNext()) {</font><font size="2"></font></b></b></b></b></b></b></p><b><b><b><b><b><b><font size="2"><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">catalogue.setDateCreated(<i>readDate</i>(child));</p><p align="left">}</p><p align="left">catalogue.setDateModified(<i>readDate</i>(child));</p><p align="left">}</p><p align="left">catalogue.setComment(child.getText());</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">}</p><p align="left">bookList=</p><p align="left">catalogue.setBookList(bookList);</p><p align="left"><i>readListOfBooks</i>(child, catalogue);</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">}</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">cdList=</p><p align="left">catalogue.setCdList(cdList);</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left"><i>readListOfCds</i>(child,catalogue);</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">}</p><p align="left">}</p><p align="left">}</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p>}</p></font><b><font color="#7f0055" size="2">if</font><font size="2">(child.getName()==</font><font color="#2a00ff" size="2">"date_created"</font><font size="2">){</font><b><font color="#7f0055" size="2">else</font><font size="2"> </font><b><font color="#7f0055" size="2">if</font><font size="2">(child.getName()==</font><font color="#2a00ff" size="2">"date_modified"</font><font size="2">){</font><b><font color="#7f0055" size="2">else</font><font size="2"> </font><b><font color="#7f0055" size="2">if</font><font size="2">(child.getName()==</font><font color="#2a00ff" size="2">"comment"</font><font size="2">){</font><b><font color="#7f0055" size="2">else</font><font size="2"> </font><b><font color="#7f0055" size="2">if</font><font size="2">(child.getName()==</font><font color="#2a00ff" size="2">"books"</font><font size="2">){</font><b><font color="#7f0055" size="2">new</font><font size="2"> ArrayList();</font><b><font color="#7f0055" size="2">else</font><font size="2"> </font><b><font color="#7f0055" size="2">if</font><font size="2">(child.getName()==</font><font color="#2a00ff" size="2">"cds"</font><font size="2">){</font><b><font color="#7f0055" size="2">new</font><font size="2"> ArrayList();</font><b><font color="#7f0055" size="2">return</font><font size="2"> catalogue; </font></b></b></b></b></b></b></b></b></b></b></b></b></b></b></b></b></b></b><div>&nbsp;<br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">ArrayList bookList;</p><p align="left">ArrayList cdList;</p><p align="left">Catalogue catalogue=</p><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">List children=element.getChildren();</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">Iterator iterator=children.iterator();</p><div>&nbsp;<br class="webkit-block-placeholder"></div><p align="left">Element child = (Element) iterator.next();</p><div>&nbsp;<br class="webkit-block-placeholder"></div></font><b><font color="#7f0055" size="2">class</font><font size="2"> JDomReaderSax </font><font size="2">{</font></b></b></b></b></b></b></b></b></b></b></b></b></b></b> <br><br><br><i><div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 1pt; border-bottom: medium none; mso-element: para-border-div; mso-border-top-alt: solid windowtext .5pt"><div style="border-right-width: medium; border-right-style: none; border-right-color: initial; padding-right: 0cm; border-top-width: medium; border-top-style: none; border-top-color: initial; padding-left: 0cm; padding-bottom: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; border-left-width: medium; border-left-style: none; border-left-color: initial; padding-top: 0cm; border-bottom-width: medium; border-bottom-style: none; border-bottom-color: initial; "><span lang="NL-BE" style="font-size: 7pt; font-family: Verdana; mso-ansi-language: NL-BE; mso-bidi-font-size: 12.0pt">Dit bericht is onderworpen aan de voorwaarden beschikbaar op <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/nl.htm">onze website</a><o:p></o:p></span></u></span></div></div><div style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span lang="EN-GB" style="font-size: 7pt; font-family: Verdana; mso-bidi-font-size: 12.0pt">Ce message est soumis aux conditions disponibles sur <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/fr.htm">notre site web</a><o:p></o:p></span></u></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span lang="EN-GB" style="font-size: 7pt; font-family: Verdana; mso-bidi-font-size: 12.0pt">This message is subject to the terms and conditions available on <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/eng.htm">our website</a></span></u><o:p></o:p></span></div></i> <br><i><div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 1pt; border-bottom: medium none; mso-element: para-border-div; mso-border-top-alt: solid windowtext .5pt"><div style="border-right-width: medium; border-right-style: none; border-right-color: initial; padding-right: 0cm; border-top-width: medium; border-top-style: none; border-top-color: initial; padding-left: 0cm; padding-bottom: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; border-left-width: medium; border-left-style: none; border-left-color: initial; padding-top: 0cm; border-bottom-width: medium; border-bottom-style: none; border-bottom-color: initial; "><span lang="NL-BE" style="font-size: 7pt; font-family: Verdana; mso-bidi-font-size: 12.0pt; mso-ansi-language: NL-BE">Dit bericht is onderworpen aan de voorwaarden beschikbaar op <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/nl.htm">onze website</a><o:p></o:p></span></u></span></div></div><div style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span lang="EN-GB" style="font-size: 7pt; font-family: Verdana; mso-bidi-font-size: 12.0pt">Ce message est soumis aux conditions disponibles sur  <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/fr.htm">notre site web</a><o:p></o:p></span></u></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span lang="EN-GB" style="font-size: 7pt; font-family: Verdana; mso-bidi-font-size: 12.0pt">This message is subject to the terms and conditions available on  <u><span style="color: #3366ff"><a target="_blank" href="http://www.colruytgroup.com/colruytgroup/static/disclaimer/eng.htm">our website</a></span></u><o:p></o:p></span></div></i> _______________________________________________<br>To control your jdom-interest membership:<br><a href="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com</a></blockquote></div><br></body></html>