Hallo zusammen,
ich bin neu hier und habe gleich eine Frage. Jedoch erstmal zur Problematik:
Ich möchte einen Baum erstellen, den es später in eine Datei zu schreiben gilt. In diesem Baum kann es 3 unterschiedliche Knotentypen geben: Artikel, Dokument und Datei.
Ein Artikel kann wiederum aus mehreren Artikeln bestehen, ebenso kann ein Dokument aus mehreren Dokumenten bzw. Dateien bestehen.
Hinzu kommt, dass einem Artikel auch ein oder mehrere Dokumente zugeordnet sein können.
Die Informationen darüber, wie was zugeordnet wird, stehen in XML Dateien, die ich parsen möchte.
Hier ein Codeschnipsel aus der XML-Datei, in der alle Artikel stehen:
[XML]
<ART>
<ID>962085</ID>
<PART_NAME>Hubabubaluba</PART_NAME>
<LINK_ART>xml/art_962085.xml</LINK_ART>
</ART>
<ART>
<ID>962084</ID>
<PART_NAME>test</PART_NAME>
<LINK_ART>xml/art_962084.xml</LINK_ART>
</ART>
[/XML]
Und hier der Schnipsel eines der beiden Artikel (xml/art_962085.xml):
[XML]
<ART-SINGLE>
<ID>962085</ID>
<PART_NAME>Hubabubaluba</PART_NAME>
<LINK_ART>xml/art_962085.xml</LINK_ART>
<LINK_BOM>xml/art_bom_962085.xml</LINK_BOM>
</ART-SINGLE>
[/XML]
Mein Parser zum Lesen der XML-Datein sieht wie folgt aus:
Meine Frage lautet nun: Wie baue ich am intelligentesten einen Baum auf, der auch mit einer großen Menge an Artikeln, Dokumenten und Dateien zurecht kommt (Anzahl der zu parsenden Datein: ca. 50.000)
Vielen Dank für eure Unterstützung im Vorraus
ich bin neu hier und habe gleich eine Frage. Jedoch erstmal zur Problematik:
Ich möchte einen Baum erstellen, den es später in eine Datei zu schreiben gilt. In diesem Baum kann es 3 unterschiedliche Knotentypen geben: Artikel, Dokument und Datei.
Ein Artikel kann wiederum aus mehreren Artikeln bestehen, ebenso kann ein Dokument aus mehreren Dokumenten bzw. Dateien bestehen.
Hinzu kommt, dass einem Artikel auch ein oder mehrere Dokumente zugeordnet sein können.
Die Informationen darüber, wie was zugeordnet wird, stehen in XML Dateien, die ich parsen möchte.
Hier ein Codeschnipsel aus der XML-Datei, in der alle Artikel stehen:
[XML]
<ART>
<ID>962085</ID>
<PART_NAME>Hubabubaluba</PART_NAME>
<LINK_ART>xml/art_962085.xml</LINK_ART>
</ART>
<ART>
<ID>962084</ID>
<PART_NAME>test</PART_NAME>
<LINK_ART>xml/art_962084.xml</LINK_ART>
</ART>
[/XML]
Und hier der Schnipsel eines der beiden Artikel (xml/art_962085.xml):
[XML]
<ART-SINGLE>
<ID>962085</ID>
<PART_NAME>Hubabubaluba</PART_NAME>
<LINK_ART>xml/art_962085.xml</LINK_ART>
<LINK_BOM>xml/art_bom_962085.xml</LINK_BOM>
</ART-SINGLE>
[/XML]
Mein Parser zum Lesen der XML-Datein sieht wie folgt aus:
Java:
package core;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;
/**
* Klasse um XML Dateien zu parsen.
* @author GetStringFrmObj
*
*/
public class XMLparser {
/**
* XML Datei, die geparst werden soll
*/
private File f;
/**
* XML-Tag, von dem der Pfad + Dateiname extrahiert werden soll
*/
private String tag;
/**
* String Liste, in der alle Pfade und Dateinamen stehen
*/
public List<String> str_list = new ArrayList<String>();
/**
* Konstruktor, dem eine Quelldatei und das Tag übergeben werden müssen und das Ergebnis in die Liste schreibt.
* @param src
* @param tag
* @throws XMLStreamException
*/
public XMLparser(File src, String tag) throws XMLStreamException{
this.f = src;
this.tag = tag;
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader stax = inputFactory.createXMLStreamReader( new StreamSource(f) ) ; //öffnet übergebene Datei
StringBuffer sb = new StringBuffer();
int state = 0;
while( stax.hasNext() ) {
stax.next();
String name = ( stax.hasName() ) ? stax.getName().getLocalPart().trim() : null;
String text = ( stax.hasText() ) ? stax.getText().trim() : null;
if( stax.hasName() && name.equals(tag) ) {
String s = stax.getElementText();
str_list.add(s);
}
}
//Hier müsste der Code stehen, der für jeden der Artikel einen Knoten im Baum erstellt und ihn an die Wurzel oder einen anderen Artikel/Dokument anhängt.
}
public void printList(){
System.out.println(str_list.toString());
}
public List<String> getList(){
return str_list;
}
}
Meine Frage lautet nun: Wie baue ich am intelligentesten einen Baum auf, der auch mit einer großen Menge an Artikeln, Dokumenten und Dateien zurecht kommt (Anzahl der zu parsenden Datein: ca. 50.000)
Vielen Dank für eure Unterstützung im Vorraus
Zuletzt bearbeitet: