K
KartoffelKiffer
Gast
Hallo,
ich benutze den DOM-Parser um mir ein XML-Dokument aus einem ResultSet zu schreiben.
Zuerst generiere ich einen DocumentBuilder, der an das Document ein MainElement und mehrere ChildElemente anhängt. In das ChildElement werden dann die Daten aus einem ResultSet geschrieben. In etwa so zu verstehen:
Wobei dann Spalte1 und Spalte2 die columnNames aus dem ResultSet sind.
Dieser Knoten wird in einer Schleife durchlaufen, die solange das Document vollschreibt, bis auch der letzte Datensatz aus dem ResultSet abgearbeitet ist.
Ist also ein neuer Datensatz in dem ResultSet angebrochen, schreibt er auch ein neues ChildElement, sodass ich später ein MainElement habe, viele ChildElemente und noch mehr SpaltenElemente mit ihrem Inhalt.
Jetzt habe ich nun ein ResultSet, das 62.000 Datensätze beinhaltet. Die ganze Prozedur dauert exakte eine Minute und 24 Sekunden. Für einen Anwender, der "nur mal eben" etwas sehen möchte, ist das natürlich zuviel des Guten. Das Befüllen des ResultSet´ dauert nur wenige Millisekunden, daran liegt es also nicht (ist eine Abfrage aus der Datenbank).
Das Document, welches vom DOM generiert wird, schreibe ich lediglich mittels BufferedWriter in ein File. Das File im Endeffekt ist dann etwas über 5MB groß, und umfasst ca. 250.000 Zeilen.
Was dauert in meinem Programm denn nun solange? Das Erstellen des Dokumentes (Document, von DOM generiert), mit all seinen Elementen, oder das Schreiben dieses Documents in eine Datei?
Hat jemand von Euch schonmal mit einem ähnlichen Datenaufkommen gerarbeitet, und weiß evtl. wie es besser zu handlen wäre? Ich bin über jegliche Hilfe sehr dankbar.
Mfg Tom
ich benutze den DOM-Parser um mir ein XML-Dokument aus einem ResultSet zu schreiben.
Zuerst generiere ich einen DocumentBuilder, der an das Document ein MainElement und mehrere ChildElemente anhängt. In das ChildElement werden dann die Daten aus einem ResultSet geschrieben. In etwa so zu verstehen:
Code:
<MainElement>
<ChildElement>
<Spalte1>Inhalt1.1 / Spalte 1, Zeile 1</Spalte1>
<Spalte2>Inhalt1.2 / Spalte 2, Zeile 1</Spalte2>
</ChildElement>
<ChildElement>
<Spalte1>Inhalt2.1 / Spalte 1, Zeile 2</Spalte1>
<Spalte2>Inhalt2.2 / Spalte 2, Zeile 2</Spalte2>
</ChildElement>
</MainElement>
Wobei dann Spalte1 und Spalte2 die columnNames aus dem ResultSet sind.
Code:
Element node = doc.createElement(columnName);
Dieser Knoten wird in einer Schleife durchlaufen, die solange das Document vollschreibt, bis auch der letzte Datensatz aus dem ResultSet abgearbeitet ist.
Ist also ein neuer Datensatz in dem ResultSet angebrochen, schreibt er auch ein neues ChildElement, sodass ich später ein MainElement habe, viele ChildElemente und noch mehr SpaltenElemente mit ihrem Inhalt.
Jetzt habe ich nun ein ResultSet, das 62.000 Datensätze beinhaltet. Die ganze Prozedur dauert exakte eine Minute und 24 Sekunden. Für einen Anwender, der "nur mal eben" etwas sehen möchte, ist das natürlich zuviel des Guten. Das Befüllen des ResultSet´ dauert nur wenige Millisekunden, daran liegt es also nicht (ist eine Abfrage aus der Datenbank).
Das Document, welches vom DOM generiert wird, schreibe ich lediglich mittels BufferedWriter in ein File. Das File im Endeffekt ist dann etwas über 5MB groß, und umfasst ca. 250.000 Zeilen.
Was dauert in meinem Programm denn nun solange? Das Erstellen des Dokumentes (Document, von DOM generiert), mit all seinen Elementen, oder das Schreiben dieses Documents in eine Datei?
Hat jemand von Euch schonmal mit einem ähnlichen Datenaufkommen gerarbeitet, und weiß evtl. wie es besser zu handlen wäre? Ich bin über jegliche Hilfe sehr dankbar.
Mfg Tom