1. Verstehen Sie die XML -Parsing -Technologie
1.1. XML -bezogene Konzepte
(1) DTD: XML -Syntaxregeln, die der Überprüfungsmechanismus von XML -Dateien sind. Sie können XML -Dokumente mit DTD -Dateien vergleichen, um festzustellen, ob das Dokument den Spezifikationen entspricht und ob die Elemente und Etiketten korrekt verwendet werden.
(2) XML ist die Grundlage von SOA.
1.2. XML -Verarbeitungstechnologie
(1) Um XML zu verwenden, müssen wir über einen XML -Prozessor oder XMLAPI auf Daten zugreifen. Derzeit bietet JAXP zwei Methoden zur Verarbeitung von XML: DOM und SAX.
① DOM: DOM greift programmgesteuert auf Daten und Strukturen in XML -Dokumenten zu, basierend auf der Baumstruktur von XML -Dokumenten im Speicher. Der Nachteil besteht darin, dass viel Overhead das gesamte XML -Dokument in den Speicher laden muss.
②Sax: Basierend auf ereignisorientiertem Segment wird ein Segment verwendet, um ein Segment zu analysieren, das das Problem der DOM löst, die viel Speicher aufnimmt, aber sein Nachteil ist, dass es nicht zufällig auf Dokumente zugreifen kann.
(2) Um die Probleme von DOM und SAX zu lösen, erschien ein Stream-basierter Streamapiforxml (kurz Stax). Es wurde zu JAXP1.4 von JDK6 hinzugefügt, und Stax ist ebenfalls ereignisgesteuert.
(3) DOM, SAX und STAX alle Prozess XML aus der Dokumentstruktur, aber viele Anwendungen konzentrieren sich nur auf die Dokumentdaten selbst, sodass die XML -Datenbindungstechnologie entstanden ist.
Datenbindung: Bezieht sich auf den Prozess des Extrahierens von Daten aus Speichermedien (XML -Dokumente und Datenbanken) und die Darstellung dieser Daten durch Programme, dh die Daten an eine Speicherstruktur, die die virtuelle Maschine verstehen und bedienen kann.
XML -Bindungsgerüst: Castor, Jaxb, Jibx, Quick, Zeus usw.
2. XML -Verarbeitungstool: Xstream
2.1. Xstream -Übersicht
(1) Xstream ist ein einfaches und benutzerfreundliches Open-Source-Framework zum Serialisieren von Java-Objekten in XML oder der Deserialisierung von XML in Java-Objekte. Schlüsselmerkmale von Xstream:
(2) Xstream -Architekturkomposition:
Konverter: Wenn Xstream auf ein Objekt trifft, das konvertiert werden muss, wird es an die entsprechende Konverterimplementierung delegiert.
IO (Eingabe/Ausgabe): Xstream wird aus den zugrunde liegenden XML -Daten über hierarchischstreamwriter und hierarchicalStreamReader abstrahiert und wird für Serialisierungs- und Deserialisierungsoperationen verwendet.
Kontext: Wenn Xstream -Deserialisierungsobjekte serialisiert, werden zwei Klassen MarshallingContext und UnmarshallingContext erstellt, und das Tower Gate verarbeitet die Daten und delegiert sie an den entsprechenden Konverter.
Fassade (einheitlicher Eingang): Integrieren Sie die oben genannten 3 Punkte miteinander und öffnen Sie sie mit einer einheitlichen Schnittstelle für Benutzer.
2.2. Schneller Start
(1) Erstellen Sie einen Xstream und geben Sie einen XML -Parser an
Xstreamxstream = newxstream (newDomDriver ());
Wenn Sie keinen Parser angeben, verwendet Xstream standardmäßig XPP (XMLPullPullPlparser) -Parser, ein Hochgeschwindigkeits-Parser.
(2) Die Beispiele sind wie folgt:
2.3. Verwenden Sie Xstream -Alias
(1) Im obigen Beispiel entspricht der vollständige Klassenname des Java -Objekts dem Stammelement der XML -Datei, und der Attributname entspricht dem Knotenelement der XML -Datei. In tatsächlichen Situationen haben jedoch sowohl das Java -Objekt als auch das XML -Objekt möglicherweise bereits Namen definiert, sodass die Alias -Zuordnung erforderlich ist.
Xstream hat 3 Alias -Konfigurationen:
Kategorienname: Verwenden Sie Alias (StringName, Classtype).
Klassenmitglied alias: Verwenden Sie Aliasfield (Stringalias, classdefinedin, StringfieldName).
Klassenmitglieder werden als Attribut -Alias verwendet: Verwenden Sie aliasAttribute (classdefinedin, StringAttributename, Stringalias) und das Benennen allein hat keine Bedeutung, und sie müssen auch über uaeTtributefor (classdefinedIn, Stringfieldname) auf eine bestimmte Klasse angewendet werden.
(2) das Beispiel in 2.2 durch Alias ändern:
2.4. Xstream -Konverter
Während des Entwicklungsprozesses müssen Sie manchmal einige benutzerdefinierte Typen konvertieren. Implementieren Sie einfach die Konverterschnittstelle und rufen Sie die Methode "RegisterConverter () von Xstream auf, um den Konverter zu registrieren.
2.5. Xstream Annotation
(1) Häufige Anmerkungen für Xstream sind wie folgt:
(2) Verwendung
Xstreamxstream = newxstream (newDomDriver ());
Es gibt 2 Möglichkeiten, Objekte zu laden:
①Method 1:
Xstream.ProcessAnnotations (AAA.CLASS);
Xstream.ProcessAnnotations (BBB.Class);
② Methode 2:
Xstream.Autodetektannotationen (true); // laden Sie die annotierte Bohne automatisch und schneidet auch das kommentierte Objekt aus.
2.6. Fließende Objekte
(1) Xstream liefert alternative Implementierungen für ObjectInputStream und ObjectOutputStream, sodass die XML -Serialisierung oder Deserialisierungsoperationen in Form von Objektströmen ermöglicht werden können. Der vorherige ist XML, der vom DOM-basierten XML-Parser gelesen wird. Hier sollten wir offensichtlich die Stream-Methode zum Parsen verwenden.
Beispiele sind wie folgt:
(2) Der Unterschied zwischen der Verwendung von Prettywriter und CompactWriter besteht darin, dass PrettyWriter das erzeugte XML formatiert, während Compactwriter die erzeugte XML komprimiert.
2.7. Persistenz -API
(1) Xstream bietet eine einfache Möglichkeit, Objekte in der Sammlung in Dateien zu bestehen, wie z.
(2) Vor dem Erstellen einer Sammlung müssen Sie auch eine Persistenzstrategie Persistencestrategy angeben.
2.8. Mit JSON umgehen
(1) XML hat eine unerschütterliche Position in WebService, aber in den meisten Webanwendungen wird leichter JSON weiterhin als Datenaustauschformat verwendet.
.
Beispiele sind wie folgt:
(3) Der Unterschied zwischen JettisonMappedxMldriver und JsonhierarchicalStreamDriver:
①JettisonMappedxMldriver erzeugt komprimierte JSON, während JsonhierarchicalStreamDriver formatiert JSON erzeugt.
② Wenn Sie JSON in ein Objekt umwandeln möchten, können Sie nur JettisonMappedxMldriver verwenden.
3. Andere gemeinsame O/Xmapping Open Source -Projekte
Vergleich von JAXB, XMLBEANS, CSTOR, JIBX:
4. Integration mit Springoxm
4.1. Überblick über Springoxm
(1) Springoxm hat eine einheitliche Abstraktion und Einkapselung des Mainstream -O/Xmapping -Frameworks gemacht. Marshaller und Unmarshaller sind die beiden Kernoberflächen von Springoxm. Marshaller wird verwendet, um Objekte in XML umzuwandeln, und Unmarshaller wird verwendet, um XML in Objekte umzuwandeln.
(2) Die O/Xmapping -Komponentenverpackungen sind wie folgt:
4.2. Konfigurieren im Frühjahr
(1) Xstreammarshaller -Konfigurationsinstanz:
5. Zusammenfassung
(1) XML -Datenbindung von Java -Anwendungen kann in 2 Wege zusammengefasst werden:
Generieren Sie den Java -Sprachcode (wie JAXB, XMLBEANS, Castor) basierend auf XML -Dokumenten.
Verwenden Sie eine Form der Mapping -Bindungsmethode, dh festlegen, wie Java -Klassen XML (wie Xstream, Castor, Jibx) zugeordnet sind.
(2) Vergleich von 2 Wegen:
Unter Verwendung einer stabilen Dokumentstruktur, die durch Schema oder DTD definiert ist und die Struktur für die Anforderungen der Anwendung geeignet ist, kann eine Code -Erzeugungsmethode die beste Wahl sein.
Wenn Sie eine vorhandene Java -Klasse verwenden oder eine Struktur einer Klasse verwenden möchten, die die Verwendung von Daten durch die Anwendung und nicht eine XML -Struktur widerspiegelt, ist die Mapping -Methode die beste Wahl.
Zusammenfassen
Im obigen dreht sich alles um Feder unter Verwendung von OXM für die XML -Mapping -Analyse von Objekte. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!