# XML Zwischenformat?



## Schleichmichel (24. Apr 2007)

Hi, ich habe mir aus JavadocInfos ein XML erstellt und möchte diese Informationen jetzt nutzen. Wenn ich das XML normal durchsuche dauert das aber zu lange (DOM). Ein Kumpel meinte man könne das XML mappen, also so eine Art Zwischenformat erzeugen. Gemacht habe er das aber auch noch nie... hat jemand vielleicht nen Startpunkt für mich wo man sich da langhangeln kann?
Vielen Dank schonmal im Vorraus.


----------



## Ullenboom (24. Apr 2007)

Also ist das gesamte JavaDoc nun in einer (riesen) XML-Datei? Wenn das in den Speicher passt, dann ist das doch gut. Denn dann kann man angenehm das XML-Dokument als DOM-Baum laden und mit XPath (http://java.sun.com/javase/6/docs/api/javax/xml/xpath/package-summary.html) seine Suchanfragen stellen.


----------



## Schleichmichel (24. Apr 2007)

Ja, das XML ist komplett in einer Datei. Ist halt sehr langsam wenn ich einzelne Informationen auslesen will, aber dann werd ich das wohl so machen müssen. Dankeschön!


----------



## Ullenboom (24. Apr 2007)

Aah. Dann bleibt das Programm also nicht immer im Speicher, sondern wird quasi gestartet, die Anfrage gestellt und dann wieder beendet? Dann kommt es auf die Parse-Geschwindigkeit natürlich an.

Eine Idee ist, den DOM-Baum zu serialisieren, also mit ObjectOutputStream einmal zu schreiben und dann immer mit ObjectInputSteam zu lesen. (Ein GZipXXXStream dazwischen wäre sicherlich auch nicht verkehrt.) Xerces als JAXP-Implementierung unterstützt die Serialisierung von DOM-Bäumen (http://xerces.apache.org/xerces2-j/faq-dom.html).

Als Zweites fällt mir da http://java.sun.com/developer/technicalArticles/xml/fastinfoset/ ein, ein binäres und schnelles Format. 

Wäre schön, über die Wahl und Performance etwas zu erfahren.


----------



## Ullenboom (24. Apr 2007)

Hatte noch https://fi.dev.java.net/ vergessen anzugeben. Sorry.


----------



## Schleichmichel (27. Apr 2007)

Im Prinzip würde ich den XML Baum nur nach einem bestimmten Knoten(namen) durchsuchen wollen. D.h. ich habe zum Beispiel einen Klassennamen und möchte den dazugehörigen Knoten finden und mir ein oder zwei child-Knoten aus diesem abrufen. Ich brauche also nicht alle Informationen des kompletten XML, sondern gezielt einzelne.
Vielen Dank schonmal für die ganzen Infos... so langsam kommt das wissen aus diesem Bereich auch wieder  Bei meinen Zielen wäre dann doch eigentlich sinnvoll mit SAX zu arbeiten oder sehe ich das falsch - sehr wenig praktische erfahrug mit XML 
Gruß


----------



## Ullenboom (27. Apr 2007)

Wenn der Baum im Speicher ist, läuft man ihn nie mit der Hand ab. (Vereinfacht gesagt.) Für Anfrangen verwendet man XPath. Ist der Baum nicht im Speicher, ist StAX etwas effizienter als SAX2.


----------



## Schleichmichel (3. Mai 2007)

Also habe ich jezt die Wahl mir mit DOM den Baum komplett in den Speicher zu laden und dann mit XPath zu durchsuchen, oder mit einer Form von SAX auf das XML zuzugreifen?
Vielen Dank schonmal für die Antworten - haben mich ein ganzes Stück weiter gebracht.


----------

