Frage

ich bin immer etwas verloren mit allen XML-Handling Methoden in Java, XPath, Saxophon, DOM, Document ... verschiedene Summenwörter, die ich sehe nicht, wie sie sich beziehen ...

1), so dass ich meine Frage bin zu raten ist jeder weiß, ein gutes Tutorial über 6 XML in Java Umgang ?, ich habe ein paar, aber sie scheinen gefunden alt zu sein.

2) Ich brauche eine XML-Struktur zu durchqueren, bewusst verschiedene Knoten davon zu sein bedeuten, und in der Lage sein, Daten zu nehmen von ihr, was der beste Weg ist, es zu tun?

Dank

irgendeine Verbindung würde geschätzt

War es hilfreich?

Lösung

Es gibt verschiedene XML-Technologien in Java, alle von ihnen im Grunde das gleiche tun (eine Art und Weise des Zugangs zu der XML-Struktur bereitstellt), aber alle von ihnen in meist unterschiedlicher Weise.

Die ursprüngliche Technik, SAX, ist ein Streaming-XML-Prozessor. Einfach, feuern Sie den Parser und die Parser Rückrufe in Ihrem Code machen, wie es verschiedene XML-Elemente trifft. Der Schlüssel hier ist, dass es die Verarbeitung von XML-Elemente, nicht die XML-Elemente. Das heißt, es wird Ihnen sagen, wann es wird ein neues XML-Element (beliebiges XML-Element), oder einen Textblock, um zu sehen, anstatt das ORDER-Element oder das ITEM-Element. SAX XML sieht über der Token-Ebene bei nur, es ist bis zu Ihrem Programm tatsächlich von diesem Baum eine in Speicherrepräsentation zu bauen.

Als nächstes ist DOM. Domain Object Model. Dies ist eine Technik vertraut zu Web-Entwickler. Es beginnt damit, das gesamte XML-Dokument in dem Speicher raubend und, im Gegensatz zu SAX, es gibt einen Verweis auf den in Speichermodell - eine Kombination von Knoten und Zeigern auf andere Knoten. Sie können leicht den DOM-Baum gehen, Ihre Informationen zu finden, aber es ist ein generisches Modell. Der Vorteil des DOM-Modells ist, dass Sie das gesamte Dokument in einer einzigen Form erhalten tun. Der Nachteil ist, dass man, na ja, das gesamte Dokument in einer einzigen Form erhalten. Es ist schön für kleinere Dokumente, nicht so gut für enorm diejenigen.

Natürlich ist es hängt alles davon ab, was Sie aus dem Dokument wollen. Wenn Sie wirklich alle Informationen aus dem Dokument benötigen, dann können Sie auch die ganze Sache in dem Speicher laden. Wenn Sie nur eine Teilmenge benötigen, dann ist ein Streaming-Prozessor kann eine bessere Lösung sein, vor allem für große Dokumente.

Die Kombination aus dem auch das ist eine Technologie namens StAX, die im Grunde einem „DOM“ wie Ansicht geben, um ein XML-Dokument übertragen. Was dies bedeutet, ist, dass Sie mit XML-Dokument so wie sonst ein DOM-Dokument gearbeitet, aber der Parser wird träge laden Sie die Informationen auf, die Sie extrahieren möchten, die in idealer Weise niedrigere Gesamtspeicherbelastung. Es ist also eine Kombination der zwei oben genannten Techniken.

Für beide DOM und StAX, gibt es eine Technik zur Verfügung, um die Daten zugreifen als „XPath“. XPath ist eine Abfragesprache Sie Zugriff auf die einzelnen Elemente zu geben, aber in deklaratorischer Weise. Sie können auf die gleiche Weise betrachten XPath Sie einen Dateinamen Pfad auf Ihrer Festplatte in Betracht ziehen würden. Ohne XPath würden Sie müssen an der Wurzel des XML-Dokuments, und „Crawl“ der Baum zu erhalten, und extrahieren Sie Ihre Informationen starten. XPath abstrahiert diesen Prozess für Sie, und es kann zu vermeiden hilft viel von dem Lärm eines XML-Dokuments, vor allem, wenn Sie nach einer Untergruppe einer größeren Dokument sind.

Schließlich mit Java gibt es eine Technologie „JAXB“ genannt, die eine XML-Bindungstechnologie. Dies wird verwendet, Java-Klassen abzubilden und von XML. Sie zeigen das System in einem XML-Dokument, und Sie erhalten Java-Klassen zurück. Oder zeigen Sie eine Java-Klasse Instanz im System, und Sie können XML zurück. Für grundlegende Fälle finde ich JAXB ganz einfach zu bedienen, vor allem, wenn ich beide die Kontrolle über die Java-Klassen und der daraus resultierenden XML haben. Auch gibt es andere, 3rd-Party-XML-Systeme ähnlich wie JAXB Bindung, aber JAXB kommt mit Java 6.

Wie zu denen, die Sie brauchen, die für Sie wirklich los ist.

Die meisten Leute vermeiden SAX heute, da es ein bisschen wie ein Schmerz ist, um tatsächlich zu nutzen. Es ist schnell und billig, kann aber Zeit als Programmierer raubend.

DOM und XPath ist wahrscheinlich die am weitesten verbreitete Technik heute, vor allem, weil es ähnlich ist zu moderner Web-Seite Programmierung und wie der Browser mit XML arbeiten. Wenn Sie kleinere Dokumente (weniger als 50-100K), und vor allem, wenn Sie nur eine Teilmenge der Daten benötigen, DOM und XPath sind durchaus in der Lage und einfach zu bedienen.

Wenn Sie eine Arbeits auf einer höheren Ebene zu planen, und Notwendigkeit, die Arbeit mit dem gesamten Dokument, sowie das Lesen und Schreiben von XML, dann kann JAXB von Interesse sein. Meine einzige Sorge ist, dass ein XML-Erbe Mapping Dokument Klassen aetwas komplizierter, und Sie können nicht früh Erfolg erhalten versuchen, das zu tun.

Alle diese haben gute Führer zur Verfügung, und ich werde Links nicht zur Verfügung stellen. Vielmehr können Sie dieses Handbuch auf der speziellen XML-Technologie konzentrieren, dass Sie Ihre Anwendung passen würde denken, am besten, und gehen von dort aus.

Andere Tipps

  

Die meisten Leute vermeiden SAX heute, da es ein bisschen wie ein Schmerz ist, um tatsächlich zu nutzen.   Es ist schnell und billig, kann aber Zeit als Programmierer raubend.

http://code.google.com/p/jlibs/wiki/SAX2JavaBinding

die oben genannte URL zeigt, wie ohne Komplexität Leistung von sax verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top