Maison  >  Article  >  interface Web  >  Étapes de mise en œuvre de l'utilisation d'oxm pour mapper XML

Étapes de mise en œuvre de l'utilisation d'oxm pour mapper XML

php中世界最好的语言
php中世界最好的语言original
2018-04-13 13:51:321629parcourir

Cette fois, je vais vous présenter les étapes de mise en œuvre de l'utilisation d'oxm pour mapper xml Quelles sont les précautions pour utiliser oxm pour mapper xml. Ce qui suit est un cas pratique, jetons un coup d'œil. .

Comprendre la technologie d'analyse XML

Concepts liés au XML

(1) DTD : les règles de syntaxe XML sont le mécanisme de vérification des fichiers XML. Vous pouvez comparer les documents XML et les fichiers DTD pour voir si le document est conforme aux spécifications et si les éléments et balises sont utilisés correctement.

(2) XML est la base de SOA.

Technologie de traitement XML

(1) Pour utiliser XML, nous devons accéder aux données via un processeur XML ou une API XML. Actuellement, JAXP propose deux méthodes de traitement XML : DOM et SAX.

①DOM : DOM accède aux données et à la structure du document XML via une programmation, basée sur la structure arborescente du document XML en mémoire. L'inconvénient est que le chargement de l'intégralité du document XML en mémoire nécessite beaucoup de temps système.

②SAX : il est piloté par les événements et utilise un segment d'analyse pour résoudre le problème de l'occupation de grande mémoire par le DOM. Cependant, son inconvénient est qu'il ne peut pas accéder aux documents de manière aléatoire.

(2) Afin de résoudre les problèmes de DOM et SAX, un StreamAPI basé sur flux pour XML (StAX en abrégé) est apparu. Il a été ajouté à JAXP1.4 du JDK6 et est également piloté par les événements.

(3) DOM, SAX et StAX traitent tous le XML en fonction de la structure du document, mais de nombreuses applications se concentrent uniquement sur les données du document elles-mêmes, c'est pourquoi la technologie XML liaison de données a vu le jour.

Liaison de données : fait référence au processus d'extraction de données à partir de supports de stockage (documents XML et bases de données) et de représentation des données via des programmes, c'est-à-dire de liaison des données à une sorte de structure de mémoire que la machine virtuelle peut comprendre et exploiter.

Frameworks de liaison XML : Castor, JAXB, JiBX, Quick, Zeus, etc.

Présentation de XStream

(1) XStream est un framework open source simple et facile à utiliser pour sérialiser des objets Java en XML ou désérialiser du XML en objets Java.

(2) Composition de l'architecture XStream :

Convertisseurs : lorsque XStream rencontre un objet qui doit être converti, il délègue à l'implémentation du convertisseur appropriée.

IO (entrée/sortie) : XStream est extrait des données XML sous-jacentes via HierarchicalStreamWriter et HierarchicalStreamReader, qui sont utilisés respectivement pour les opérations de sérialisation et de désérialisation.

Contexte : lorsque XStream sérialise et désérialise des objets, il crée deux classes, MarshallingContext et UnmarshallingContext, qui traiteront les données et les délégueront au convertisseur approprié.

Façade (entrée unifiée) : Intégrez les trois points ci-dessus et ouvrez-les aux utilisateurs avec une interface unifiée.

Démarrage rapide

(1) Créez un XStream et spécifiez l'analyseur XML

XStreamxstream=newXStream(newDomDriver());

Si vous ne spécifiez pas d'analyseur, XStream utilisera l'analyseur XPP (XMLPullParser) par défaut. XPP est un analyseur à grande vitesse.

(2) Les exemples sont les suivants :

Utiliser l'alias XStream

(1) Dans l'exemple ci-dessus, le nom de classe complet de l'objet Java correspond à l'élément racine du fichier XML et le nom d'attribut correspond à l'élément nœud du fichier XML. Cependant, dans les situations réelles, les deux objets Java. et l'objet XML peut avoir déjà défini des noms. À ce stade, vous devez utiliser le mappage d'alias.

XStream a trois configurations d'alias :

Nom de la catégorie : utilisez l'alias (Stringname, Classtype).

Alias ​​de membre de classe : utilisez aliasField(Stringalias,ClassdéfiniIn,StringfieldName).

Les membres de la classe sont utilisés comme alias d'attribut : utilisez aliasAttribute(ClassdefinedIn,StringattributeName,Stringalias). Cela n'a aucun sens de les nommer seuls. Ils doivent également être appliqués à une certaine classe via useAttributeFor(ClassdefinedIn,StringfieldName).

Convertisseur XStream

Pendant le processus de développement, vous devez parfois convertir certains types personnalisés. Implémentez simplement l'interface Converter et appelez la méthode registerConverter() de XStream pour enregistrer le convertisseur.

Annotations XStream

XStreamxstream=newXStream(newDomDriver());

Il existe 2 façons de charger des objets :

①Méthode 1 :

xstream.processAnnotations(AAA.class);

xstream.processAnnotations(BBB.class);

②Méthode 2 :

xstream.autodetectAnnotations(true);//Charger automatiquement le bean d'annotation et mettre également en cache l'objet annoté

Objet de streaming

(1) XStream fournit des implémentations alternatives pour ObjectInputStream et ObjectOutputStream, permettant des opérations de sérialisation ou de désérialisation XML sous la forme de flux d'objets. Le précédent est le XML lu par l'analyseur XML basé sur DOM. Ici, nous devons évidemment utiliser la méthode stream pour l'analyse.

La différence entre l'utilisation de

PrettyWriter et CompactWriter est que PrettyWriter formatera le XML généré, tandis que CompactWriter compressera le XML généré.

API de persistance

(1) XStream fournit un moyen simple de conserver des objets d'une collection dans des fichiers, tels que : XmlArrayList, XmlSet, XmlMap, etc.

(2) Avant de créer une collection, vous devez également spécifier une stratégie de persistance PersistenceStrategy.

Traitement JSON

(1) XML occupe une position inébranlable dans WebService, mais dans la plupart des applications Web, le format JSON léger est toujours utilisé comme format d'échange de données.

(2) XStream fournit JettisonMappedXmlDriver et JsonHierarchicalStreamDriver pour terminer la conversion des objets Java et json.

(3) La différence entre JettisonMappedXmlDriver et JsonHierarchicalStreamDriver :

①JettisonMappedXmlDriver génère du JSON compressé, tandis que JsonHierarchicalStreamDriver génère du JSON formaté.

②Pour convertir JSON en objet, vous ne pouvez utiliser que JettisonMappedXmlDriver.

Intégration avec SpringOXM

Présentation de SpringOXM

SpringOXM a apporté des améliorations au O/ grand public Framework XMapping Une abstraction et une encapsulation unifiées, Marshaller et Unmarshaller sont les deux interfaces principales de SpringOXM. Marshaller est utilisé pour convertir des objets en XML et Unmarshaller est utilisé pour convertir XML en objets.

Résumé

(1) La liaison de données XML des applications Java peut être résumée en 2 méthodes :

Générez du code de langage Java (tel que JAXB, XMLBeans, Castor) basé sur des documents XML.

Utilisez une forme de méthode de liaison de mappage, qui consiste à définir la manière dont les classes Java sont associées à XML (telles que XStream, Castor, JiBX).

(2) Comparaison de 2 manières :

Avec une structure de document stable définie par un schéma ou une DTD adaptée aux besoins de l'application, une approche de génération de code peut être le meilleur choix.

Si vous utilisez une classe Java existante ou si vous souhaitez utiliser une structure de classe qui reflète l'utilisation des données par l'application, plutôt qu'une structure XML, la méthode de mappage est le meilleur choix.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Swiper implémente la rotation des images de publicité mobile

Comment vue+swiper implémente le menu de la barre latérale

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn