Hello Serg,

Did you try the dom4j library? It might be more sparingly on the
resources since it is a pure
Java library (and an excellent as well), not having the possible JNI
binding overhead.

Regards,
Helge Fredriksen

Serg_HD wrote:
> My xml-file have more than 75000 nodes and I must placed this nodes in 
> ArrayList, but if count of this nodes exceeds 
> 20000 I have memory overflow error.
>
> Code:
>
> public static void main(String[] args)
>  {
>   ArrayList<String[]> geoIp = new ArrayList<String[]>();
>
>   /*one node of geoip.xml (~75000 nodes):  <country ip_start="2.6.190.56" 
> ip_end="2.6.190.63" num_ip_start="33996344" 
> num_ip_end="33996351" flag="GB" >United Kingdom</country>*/
>
>   QFile xmlFile = new QFile("geoip.xml");
>   if (!xmlFile.exists()) System.out.println("file not exists");
>   else
>   {
>    QDomDocument doc = new QDomDocument();
>    doc.setContent(xmlFile);
>    QDomElement docElement = doc.documentElement();
>    QDomElement node = docElement.firstChildElement();
>    while(!node.isNull())
>    {
>     String[] mas = new String[6];
>     mas[0] = node.attribute("ip_start");
>     mas[1] = node.attribute("ip_end");
>     mas[2] = node.attribute("num_ip_start");
>     mas[3] = node.attribute("num_ip_end");
>     mas[4] = node.attribute("flag");
>     mas[5] = node.text();
>     geoIp.add(mas);
>    
>     /*with this line I have error of memory overflow, without it all normal*/
>     node = node.nextSiblingElement(); 
>    }
>   }
>  }
>
>
> This example (whithout xml) works fine, we don't have memory overflow:
>
> /*one line of geoip.txt: 
> "2.6.190.56","2.6.190.63","33996344","33996351","GB","United Kingdom"*/
>
> QFile csvFile = new QFile("Presets/geoip.txt");
>   if (!csvFile.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly))) 
> return;
>   ArrayList baseList = new ArrayList();
>   while (!csvFile.atEnd())
>   {
>    String line = csvFile.readLine().toString();
>    String[] mas = line.split(",");
>    for (int i = 0; i < mas.length; i ++)
>    {
>     String str = mas[i];
>     mas[i] = str.replace("\"", "");
>    }
>    baseList.add(mas); //baseList contains all data of file (~75000 lines)
>   }
>
> "VM Options: -Xmx512m" not help too.
> I would not want to deviate from XML, advise something? Very thanks (sorry 
> for my english).
> _______________________________________________
> Qt-jambi-interest mailing list
> [email protected]
> http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest
>   

_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest

Reply via email to