Mne sa velmi dobre osvedcila kombinacia

SAXParser (Xerces) + Digester (jakarta commons)

s mapovanim digestera tak aby si nacital konkretny nod do objektu a ten
potom predal metode na ulozenie do DB.

spracovanie 50MB XML aj s ulozenim trvalo cca 10 mina pametove naroky boli
minimalne.

Roman



Ales said:
> Dobry den,
>
> resim nacteni dat z vetsiho (velkeho) xml souboru, jedna se cca o 20 MB.
> Uvedeny soubor vznikl exportem z MySQL databaze. Problem je v tom, ze i
> pri nastaveni Xms 30m mi vyhazuje OutOfmemory:Java heap space. Je nejake
> omezeni (nemyslim technicke, ale pro prakticke pouziti) , kdy jeste data
> ukladat do xml souboru a kdy jiz starost o data predat nejake databazi?
> Pro ukazku prikladam kod tridy, ve ktere se snazim nacist uvedeny soubor
>
> Dekuji za pripadnou odpoved
>
> Stritesky
>
>
>
> -----------------------------------------------------------------------------------------------------------------------------------------
>
> import java.io.File;
> import org.w3c.dom.Document;
> import org.w3c.dom.*;
> import javax.swing.JOptionPane;
> import java.util.*;
>
>
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.DocumentBuilder;
> import org.xml.sax.SAXException;
> import org.xml.sax.SAXParseException;
>
> public class CistXML{
>
>     private String nazevSouboru = "";
>     private TreeMap map = new TreeMap();
>             //    map = new TreeMap();
>
>
> public CistXML(String nazev){
>
>     nazevSouboru = nazev;
> try {
>
>
>      DocumentBuilderFactory docBuilderFactory =
> DocumentBuilderFactory.newInstance();
>      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
>      Document doc = docBuilder.parse (new File(nazevSouboru));
>
>     // normalize text representation
>     doc.getDocumentElement ().normalize ();
>     System.out.println ("Hlavni element souboru je " +
> doc.getDocumentElement().getNodeName());
>
>
>     NodeList listOfRow = doc.getElementsByTagName("row");
>     int totalPersons = listOfRow.getLength();
>     System.out.println("Celkem row : " + totalPersons);
>
>                for(int s=0; s<listOfRow.getLength() ; s++){
>
>
>        Node firstPersonNode = listOfRow.item(s);
>        if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
>
>
>        Element firstPersonElement = (Element)firstPersonNode;
>
> //-------
>       NodeList firstNameTERM =
> firstPersonElement.getElementsByTagName("TERM");
>       Element firstNameElement = (Element)firstNameTERM.item(0);
>
>       NodeList textFNList = firstNameElement.getChildNodes();
>       System.out.println("Pocet Term je : " +
> ((Node)textFNList.item(0)).getNodeValue().trim());
>
> //-------
>       NodeList lastNameTERM_1 =
> firstPersonElement.getElementsByTagName("TERM_1");
>       Element lastNameElement = (Element)lastNameTERM_1.item(0);
>
>       NodeList textLNList = lastNameElement.getChildNodes();
>       System.out.println("Pocet TERM_1 je : " +
> ((Node)textLNList.item(0)).getNodeValue().trim());
>
>       
> map.put((String)(Object)firstNameElement,(String)(Object)lastNameElement);
> }//end of if clause
>
>
> }//end of for loop with s var
>
>
> }
>     catch (SAXParseException err) {
>     System.out.println ("** Parsing error"  + err.getLineNumber () + ",
> uri " + err.getSystemId ());
>     System.out.println(" " + err.getMessage ());
>     JOptionPane.showMessageDialog(null,"Chyba pøi naèítání na øádce " +
> err.getLineNumber (),"Chyba",JOptionPane.ERROR_MESSAGE);
>
> }
>     catch (SAXException e) {
>         Exception x = e.getException ();
>        ((x == null) ? e : x).printStackTrace ();
>
> }
>     catch (Throwable t) {
>         t.printStackTrace ();
> }
>
>
> }//konec konstruktoru
>
> public TreeMap dejHodnotu(){
>
>      return map;
>    }
>
>
>
> }
>
>
>

Odpovedet emailem