hallo zusammen,
ich habe die aufgabe bekommen XML dateien zu verändern/manipulieren, das problem daran, die dateien sind zwischen 8GB-14GB groß!
da ich großen zeitdruck hatte und wußte das die einzelnen elemente immer schön mit zeilenumbruch untereinander stehen, verarbeite ich diese im moment wie eine textdatei(ich weiß, ich weiß, ist nicht wirklich toll, aber es funktioniert).
heißt, ich benutze BufferedReader, BufferedWriter, PrintWriter - fange meine Elemente mit contains ab, speichere blöcke/knoten in ArrayLists zwischen. alles wunderbar, sogar die laufzeiten halten sich in grenzen(bei einfachen suchmustern 30-45min, bei komplexeren 1,5h).
so, nun kann es aber sein das die datei ohne jeglichen zeilenumbruch kommt, also kann ich mein miniprogrämmle in die tonne treten und muss was neues tippen.
mal ein Bsp für meine aufgabe:
ich soll das attribut att1 von elem2 auf 'J' ändern wenn att1 von elem7=1 und att1 von elem12=1, wenn aber att1 von elem elem12=3 dann soll z.b.: das ganze elem1 entfernt werden oder z.b. elem2 entfernt werden!
deswegen jetzt meine frage zum generellen vorgehen.
ich muss dazusagen das ich bei der XML verarbeitung in java absoluter neuling bin und nicht so richtig weiß wie ich das machen soll. ich dachte mir jedenfalls das ich den SAX schonmal zum einlesen benötige(?), ist doch die einzige möglichkeit ne XML datei sequentiell einzulesen, oder???
aber wie bekomm ich das mit sax wieder raus? der kann doch gar nicht schreiben, oder?
kann ich irgendwie sax - mit DOM,JDOM kombinieren?
wie würdet ihr vorgehen?
habt ihr nen vorschlag? wäre superdankbar!!!
viele grüße
ich habe die aufgabe bekommen XML dateien zu verändern/manipulieren, das problem daran, die dateien sind zwischen 8GB-14GB groß!
da ich großen zeitdruck hatte und wußte das die einzelnen elemente immer schön mit zeilenumbruch untereinander stehen, verarbeite ich diese im moment wie eine textdatei(ich weiß, ich weiß, ist nicht wirklich toll, aber es funktioniert).
heißt, ich benutze BufferedReader, BufferedWriter, PrintWriter - fange meine Elemente mit contains ab, speichere blöcke/knoten in ArrayLists zwischen. alles wunderbar, sogar die laufzeiten halten sich in grenzen(bei einfachen suchmustern 30-45min, bei komplexeren 1,5h).
so, nun kann es aber sein das die datei ohne jeglichen zeilenumbruch kommt, also kann ich mein miniprogrämmle in die tonne treten und muss was neues tippen.
mal ein Bsp für meine aufgabe:
ich soll das attribut att1 von elem2 auf 'J' ändern wenn att1 von elem7=1 und att1 von elem12=1, wenn aber att1 von elem elem12=3 dann soll z.b.: das ganze elem1 entfernt werden oder z.b. elem2 entfernt werden!
Code:
<xml>
<elem1 att1="12" att2="1">
<elem2 att1="N"/>
<elem3 att1="1">
<elem4 att1="F"/>
<elem5 att1="!">
<elem6>
<elem7 att1="1"/>
</elem6>
</elem5>
<elem8 att1="aa" att2="4">
<elem9>
<elem10 att1="1"/>
...usw...
</elem9>
</elem8>
</elem3>
<elem11>
<elem12 att1="1"/>
<elem13>
...usw
</elem13>
</elem11>
</elem1>
</xml>
deswegen jetzt meine frage zum generellen vorgehen.
ich muss dazusagen das ich bei der XML verarbeitung in java absoluter neuling bin und nicht so richtig weiß wie ich das machen soll. ich dachte mir jedenfalls das ich den SAX schonmal zum einlesen benötige(?), ist doch die einzige möglichkeit ne XML datei sequentiell einzulesen, oder???
aber wie bekomm ich das mit sax wieder raus? der kann doch gar nicht schreiben, oder?
kann ich irgendwie sax - mit DOM,JDOM kombinieren?
wie würdet ihr vorgehen?
habt ihr nen vorschlag? wäre superdankbar!!!
viele grüße