Heim  >  Artikel  >  Web-Frontend  >  Implementierungsschritte für die Verwendung von Oxm zum Zuordnen von XML

Implementierungsschritte für die Verwendung von Oxm zum Zuordnen von XML

php中世界最好的语言
php中世界最好的语言Original
2018-04-13 13:51:321632Durchsuche

Dieses Mal werde ich Ihnen die Implementierungsschritte für die Verwendung von Oxm zum Zuordnen von XML vorstellen. Was sind die Vorsichtsmaßnahmen für die Verwendung von Oxm zum Zuordnen von XML? .

XML-Parsing-Technologie verstehen

XML-bezogene Konzepte

(1) DTD: XML-Syntaxregeln sind der Überprüfungsmechanismus von XML-Dateien. Sie können XML-Dokumente und DTD-Dateien vergleichen, um festzustellen, ob das Dokument den Spezifikationen entspricht und ob die Elemente und Tags korrekt verwendet werden.

(2) XML ist die Basis von SOA.

XML-Verarbeitungstechnologie

(1) Um XML verwenden zu können, müssen wir über einen XML-Prozessor oder eine XML-API auf Daten zugreifen. Derzeit bietet JAXP zwei Methoden zur Verarbeitung von XML: DOM und SAX.

①DOM: DOM greift durch Programmierung auf die Daten und Struktur im XML-Dokument zu, basierend auf der Baumstruktur des XML-Dokuments im Speicher. Der Nachteil besteht darin, dass das Laden des gesamten XML-Dokuments in den Speicher einen hohen Overhead erfordert.

②SAX: Es ist ereignisgesteuert und verwendet ein Parsing-Segment, um das Problem zu lösen, dass DOM großen Speicher belegt. Sein Nachteil besteht jedoch darin, dass es nicht zufällig auf Dokumente zugreifen kann.

(2) Um die Probleme von DOM und SAX zu lösen, wurde eine Stream-basierte StreamAPI für XML (kurz StAX) hinzugefügt, die ebenfalls ereignisgesteuert ist.

(3) DOM, SAX und StAX verarbeiten alle XML basierend auf der Dokumentstruktur, aber viele Anwendungen konzentrieren sich nur auf die Dokumentdaten selbst, sodass die XML-Datenbindungstechnologie ins Leben gerufen wurde.

Datenbindung: bezieht sich auf den Prozess des Extrahierens von Daten aus Speichermedien (XML-Dokumente und Datenbanken) und der Darstellung der Daten durch Programme, d. h. der Bindung der Daten an eine Art Speicherstruktur, die die virtuelle Maschine verstehen und bedienen kann.

XML-Bindungsframeworks: Castor, JAXB, JiBX, Quick, Zeus usw.

XStream-Übersicht

(1) XStream ist ein einfaches und benutzerfreundliches Open-Source-Framework zum Serialisieren von Java-Objekten in XML oder zum Deserialisieren von XML in Java-Objekten.

(2) Zusammensetzung der XStream-Architektur:

Konverter: Wenn XStream auf ein Objekt trifft, das konvertiert werden muss, delegiert es an die entsprechende Konverterimplementierung.

IO (Eingabe/Ausgabe): XStream wird von den zugrunde liegenden XML-Daten über HierarchicalStreamWriter und HierarchicalStreamReader abstrahiert, die für Serialisierungs- bzw. Deserialisierungsvorgänge verwendet werden.

Kontext: Wenn XStream Objekte serialisiert und deserialisiert, erstellt es zwei Klassen, MarshallingContext und UnmarshallingContext, und der Tower verarbeitet die Daten und delegiert sie an den entsprechenden Konverter.

Fassade (einheitlicher Eingang): Integrieren Sie die oben genannten drei Punkte und öffnen Sie sie über eine einheitliche Schnittstelle für Benutzer.

Schnellstart

(1) Erstellen Sie einen XStream und geben Sie den XML-Parser

an XStreamxstream=newXStream(newDomDriver());

Wenn Sie keinen Parser angeben, verwendet XStream standardmäßig den XPP-Parser (XMLPullParser), einen Hochgeschwindigkeitsparser.

(2) Beispiele sind wie folgt:

Verwenden Sie den 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 entsprechen jedoch beide dem Java-Objekt und das XML-Objekt verfügt möglicherweise bereits über definierte Namen. Zu diesem Zeitpunkt müssen Sie die Alias-Zuordnung verwenden.

XStream verfügt über drei Alias-Konfigurationen:

Kategoriename: Alias ​​verwenden (Stringname, Classtype).

Alias ​​für Klassenmitglieder: Verwenden Sie aliasField(Stringalias,ClassdefinedIn,StringfieldName).

Klassenmitglieder werden als Attributaliase verwendet: use aliasAttribute(ClassdefinedIn,StringattributeName,Stringalias). Es ist sinnlos, sie allein zu benennen. Sie müssen auch auf eine bestimmte Klasse durch useAttributeFor(ClassdefinedIn,StringfieldName) angewendet werden.

XStream-Konverter

Während des Entwicklungsprozesses müssen Sie manchmal einige benutzerdefinierte Typen konvertieren. Implementieren Sie einfach die Converter-Schnittstelle und rufen Sie die Methode registerConverter() von XStream auf, um den Konverter zu registrieren.

XStream-Anmerkungen

XStreamxstream=newXStream(newDomDriver());

Es gibt zwei Möglichkeiten, Objekte zu laden:

①Methode 1:

xstream.processAnnotations(AAA.class);

xstream.processAnnotations(BBB.class);

②Methode 2:

xstream.autodetectAnnotations(true);//Automatisch die Annotation Bean laden und auch das annotierte Objekt zwischenspeichern

Streaming-Objekt

(1) XStream bietet alternative Implementierungen für ObjectInputStream und ObjectOutputStream und ermöglicht XML-Serialisierungs- oder Deserialisierungsvorgänge in Form von Objektströmen. Das vorherige ist das vom DOM-basierten XML-Parser gelesene XML. Hier sollten wir natürlich die Stream-Methode zum Parsen verwenden.

Der Unterschied zwischen der Verwendung von

PrettyWriter und CompactWriter besteht darin, dass PrettyWriter das generierte XML formatiert, während CompactWriter das generierte XML komprimiert.

Persistenz-API

(1) XStream bietet eine einfache Möglichkeit, Objekte in einer Sammlung in Dateien beizubehalten, z. B.: XmlArrayList, XmlSet, XmlMap usw.

(2) Bevor Sie eine Sammlung erstellen, müssen Sie außerdem eine Persistenzstrategie PersistenceStrategy angeben.

Verarbeitung von JSON

(1) XML hat in WebService eine unerschütterliche Stellung, aber in den meisten Webanwendungen wird immer noch leichtgewichtiges JSON als Datenaustauschformat verwendet.

(2) XStream stellt JettisonMappedXmlDriver und JsonHierarchicalStreamDriver bereit, um die Konvertierung von Java-Objekten und JSON abzuschließen.

(3) Der Unterschied zwischen JettisonMappedXmlDriver und JsonHierarchicalStreamDriver:

①JettisonMappedXmlDriver generiert komprimiertes JSON, während JsonHierarchicalStreamDriver formatiertes JSON generiert.

②Um JSON in ein Objekt zu konvertieren, können Sie nur JettisonMappedXmlDriver verwenden.

Integration mit SpringOXM

SpringOXM-Übersicht

SpringOXM hat Verbesserungen am Mainstream-O/ vorgenommen XMapping-Framework Marshaller und Unmarshaller sind eine einheitliche Abstraktion und Kapselung und die beiden Kernschnittstellen von SpringOXM. Marshaller wird zum Konvertieren von Objekten in XML verwendet, und Unmarshaller wird zum Konvertieren von XML in Objekte verwendet.

Zusammenfassung

(1) Die XML-Datenbindung von Java-Anwendungen kann in zwei Methoden zusammengefasst werden:

Generieren Sie Java-Sprachcode (wie JAXB, XMLBeans, Castor) basierend auf XML-Dokumenten.

Verwenden Sie eine Form der Zuordnungsbindungsmethode, die darin besteht, festzulegen, wie Java-Klassen mit XML verknüpft werden (z. B. XStream, Castor, JiBX).

(2) Vergleich von 2 Möglichkeiten:

Bei einer stabilen Dokumentstruktur, die durch ein Schema oder eine DTD definiert wird, die für die Anforderungen der Anwendung geeignet ist, ist ein Codegenerierungsansatz möglicherweise die beste Wahl.

Wenn Sie eine vorhandene Java-Klasse verwenden oder anstelle einer XML-Struktur eine Struktur der Klasse verwenden möchten, die die Verwendung der Daten durch die Anwendung widerspiegelt, ist die Zuordnungsmethode die beste Wahl.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Swiper implementiert die Bildrotation für mobile Werbung

Wie vue+swiper das Seitenleistenmenü implementiert

Das obige ist der detaillierte Inhalt vonImplementierungsschritte für die Verwendung von Oxm zum Zuordnen von XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn