1. Comprendre la technologie d'analyse XML
1.1. Concepts liés au XML
(1) Règles de syntaxe DTD: XML, qui sont le mécanisme de vérification des fichiers XML. Vous pouvez comparer des documents XML avec des fichiers DTD pour voir si le document est conforme aux spécifications et si les éléments et les étiquettes sont utilisés correctement.
(2) XML est la base de SOA.
1.2. Technologie de traitement XML
(1) Pour utiliser XML, nous devons accéder aux données via un processeur XML ou XMLAPI. Actuellement, Jaxp fournit deux méthodes pour le traitement de XML: DOM et SAX.
① DOM: Dom accède aux données et aux structures dans des documents XML par programme, en fonction de la structure de l'arborescence des documents XML en mémoire. L'inconvénient est qu'il nécessite beaucoup de frais généraux pour charger l'ensemble du document XML en mémoire.
②Sax: Sur la base de l'événement, un segment est utilisé pour analyser un segment, ce qui résout le problème de DOM en prenant beaucoup de mémoire, mais son inconvénient est qu'il ne peut pas accéder aux documents au hasard.
(2) Afin de résoudre les problèmes de DOM et SAX, un streamapiforxml basé sur des cours d'eau (Stax pour faire court) est apparu. Il a été ajouté à Jaxp1.4 de JDK6, et Stax est également axé sur les événements.
(3) Dom, Sax et Stax tous les processus XML à partir de la structure du document, mais de nombreuses applications se concentrent uniquement sur les données de document elle-même, de sorte que la technologie de liaison des données XML a vu le jour.
LIAISON DES DONNÉES: fait référence au processus d'extraction des données des supports de stockage (documents XML et bases de données) et représentant ces données via des programmes, c'est-à-dire la liaison des données à une structure de mémoire que la machine virtuelle peut comprendre et fonctionner.
Frame de liaison XML: Castor, Jaxb, Jibx, Quick, Zeus, etc.
2. Outil de traitement XML: Xstream
2.1. Présentation de Xstream
(1) Xstream est un cadre open source simple et facile à utiliser pour sérialiser les objets Java dans XML, ou désérialiser XML dans des objets Java. Caractéristiques clés de Xstream:
(2) Composition d'architecture Xstream:
Convertisseurs: Lorsque Xstream rencontre un objet qui doit être converti, il est délégué à l'implémentation du convertisseur approprié.
IO (entrée / sortie): XStream est abstrait des données XML sous-jacentes via HiérarchicalStreamwriter et HierarchicalStreamReader, et est utilisé pour les opérations de sérialisation et de désérialisation respectivement.
Contexte: Lorsque Xstream sérialise les objets de désérialisation, deux classes MarshallingContext et UnmarshallingContext sont créées et la porte de la tour traite les données et les délégue au convertisseur approprié.
FACADE (Entrée unifiée): intégrez les 3 points ci-dessus et ouvrez-les aux utilisateurs avec une interface unifiée.
2.2. Démarrage rapide
(1) Créer un Xstream et spécifier un analyseur XML
XstreamXstream = newXStream (newdomdriver ());
Si vous ne spécifiez pas un analyseur, Xstream utilisera l'analyseur XPP (XMLPullParser) par défaut, qui est un analyseur à grande vitesse.
(2) Les exemples sont les suivants:
2.3. Utilisez des 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 de nœud du fichier XML. Cependant, dans des situations réelles, l'objet Java et l'objet XML peuvent avoir déjà défini les noms, donc le mappage d'alias est nécessaire.
Xstream a 3 configurations d'alias:
Nom de la catégorie: utilisez Alias (StringName, Classtype).
Alias membre de la classe: utilisez Aliasfield (Stringalias, classDefinedIn, StringFieldName).
Les membres de la classe sont utilisés comme alias d'attribut: utilisez AliasAttribute (classDefinedIn, StringAtTributename, Stringalias) et les nommer seuls n'a pas de sens, et ils doivent également être appliqués à une certaine classe via uiseaTTributeFor (classDeFinedIn, StringFieldName).
(2) Modifiez l'exemple dans 2.2 à Alias:
2.4. Convertisseur Xstream
Pendant le processus de développement, vous devez parfois convertir certains types de personnalité. Implémentez simplement l'interface du convertisseur et appelez la méthode RegisterConverter () de Xstream pour enregistrer le convertisseur.
2.5. Annotation Xstream
(1) Les annotations courantes pour Xstream sont les suivantes:
(2) utiliser
XstreamXstream = newXStream (newdomdriver ());
Il existe 2 façons de charger des objets:
①Method 1:
xstream.processannotations (aaa.class);
xstream.processannotations (bbb.class);
② Méthode 2:
xstream.Autodetectannotations (true); // charge automatiquement le haricot annoté et cache également l'objet annoté.
2.6. Objets qui coulent
(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. La précédente est la lecture XML par l'analyseur XML basé sur DOM, nous devons évidemment utiliser la méthode du flux pour l'analyse.
Les exemples sont les suivants:
(2) La différence entre l'utilisation de PrettyWriter et CompactWriter est que PrettyWriter formatera le XML généré, tandis que CompactWriter comprimera le XML généré.
2.7. API de persistance
(1) Xstream fournit un moyen simple de persister des objets dans la collection en 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.
2.8. Gérer JSON
(1) XML a une position inébranlable dans le service Web, mais dans la plupart des applications Web, JSON léger est toujours utilisé comme format d'échange de données.
(2) XStream fournit JetTisonMaptxMldriver et JSONHierarchicalStreamDriver pour terminer la conversion des objets Java et JSON.
Les exemples sont les suivants:
(3) La différence entre JetTisonMappExMldriver et JSONHierarchicalStreamDriver:
①JetTisonMAPPxMldriver génère JSON compressé, tandis que JSONHierarchicalStreamDriver génère JSON formaté.
② Si vous souhaitez convertir JSON en un objet, vous ne pouvez utiliser que JetTisonMAPPXMLDRIVER.
3. Autres projets open source communs O / Xmapping
Comparaison de JAXB, XMLBEANS, CSTOR, JIBX:
4. Intégration avec SpringoxM
4.1. Aperçu de SpringoxM
(1) SpringoxM a fait une abstraction unifiée et une encapsulation du cadre O / Xmapping traditionnel. Marshaller et Unmarshaller sont les deux interfaces de base de Springoxm. Marshaller est utilisé pour convertir des objets en XML, et Unmarshaller est utilisé pour convertir XML en objets.
(2) Les emballages des composants O / XMapping sont les suivants:
4.2. Configurer au printemps
(1) instance de configuration XStreamMarshaller:
5. Résumé
(1) La liaison des données XML des applications Java peut être résumé de 2 façons:
Générez le code de langue Java (tel que JaxB, XMLBeans, Castor) basé sur des documents XML.
Utilisez une forme de méthode de liaison de mappage, c'est-à-dire définir la façon dont les classes Java sont associées à XML (telles que Xstream, Castor, Jibx).
(2) Comparaison de 2 façons:
En utilisant une structure de document stable définie par le schéma ou le DTD, et la structure convient aux besoins de l'application, une méthode 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 d'une 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.
Résumer
Ce qui précède est tout au sujet du ressort en utilisant l'OXM pour l'analyse de cartographie XML d'objet. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!