Introduction à JiBX

Introduction à JiBX

1. Vue d'ensemble

JiBX est un outil de liaison de données XML à des objets Java. Il offre des performances solides par rapport à d'autres outils courants tels que JAXB.

JiBX est également assez flexible par rapport aux autres outils Java-XML, utilisant des définitions de liaison pour découpler la structure Java de la représentation XML afin que chacun puisse être modifié indépendamment.

Dans cet article, nous allons explorer les différentes manières fournies par JiBX de lier le XML aux objets Java.

2. Composants de JiBX

2.1. Document de définition de reliure

Le document de définition de liaison spécifie comment vos objets Java sont convertis en ou à partir de XML.

Le compilateur de liaisons JiBX prend en entrée une ou plusieurs définitions de liaisons, ainsi que les fichiers de classe réels. Il compile la définition de liaison en bytecode Java en l'ajoutant aux fichiers de classe. Une fois que les fichiers de classe ont été améliorés avec ce code de définition de liaison compilé, ils sont prêts à fonctionner avec le runtime JiBX.

2.2. Outils

Nous allons utiliser trois outils principaux:

  • BindGen - pour générer la liaison et les définitions de schéma correspondantes à partir du code Java

  • CodeGen - pour créer le code Java et une définition de liaison à partir d'un schéma XML

  • JiBX2Wsdl - pour créer la définition de liaison et un WSDL correspondant avec une définition de schéma à partir du code Java existant

3. Configuration Maven

3.1. Les dépendances

Nous devons ajouter la dépendance jibx-run dans lespom.xml:


    org.jibx
    jibx-run
    1.3.1

La dernière version de cette dépendance peut être trouvéehere.

3.2. Plugins

Pour effectuer les différentes étapes de JiBX comme la génération de code ou la génération de liaison, nous devons configurermaven-jibx-plugin enpom.xml.

Dans le cas où nous devons démarrer à partir du code Java et générer la liaison et la définition du schéma, configurons le plugin:


    org.jibx
    maven-jibx-plugin
    ...
    
        src/main/resources
        
            *-binding.xml
        
        
            template-binding.xml
        
        true
    
    
        
            process-classes
            
                bind
            
        
    

Lorsque nous avons un schéma et que nous générons le code Java et la définition de liaison, lemaven-jibx-plugin est configuré avec les informations sur le chemin du fichier de schéma et le chemin vers le répertoire du code source:


    org.jibx
    maven-jibx-plugin
    ...
    
        
        generate-java-code-from-schema
        
             schema-codegen
        
            
                src/main/jibx
                
                    customer-schema.xsd
                
                true
            
            
            
                compile-binding
                
                    bind
                
            
                target/generated-sources
                true
                true
                true
            
        
    

4. Définitions contraignantes

Les définitions de liaison constituent la partie essentielle de JiBX. Un fichier de liaison de base spécifie le mappage entre les champs d'objet XML et Java:


    
        ...
        
    

4.1. Cartographie de la structure

Le mappage de structure rend la structure XML similaire à la structure d'objet:


    
    ...
    
        ...
        
    
    ...
    

Les classes correspondantes pour cette structure vont être:

public class Customer {

    private Person person;
    ...

    // standard getters and setters

}

public class Person {

    private String lastName;
    ...

    // standard getters and setters

}

4.2. MappagesCollection etArray

La reliure JiBX offre un moyen simple de travailler avec une collection d'objets:


    

        
            
              ...
        
     ...

Voyons les objets Java de mappage correspondants:

public class Order {
    List
addressList = new ArrayList<>(); ... // getters and setters here } public static class Address { private String name; ... // standard getters and setter }

4.3. Mappages avancés

Jusqu'à présent, nous avons vu une définition de base de la cartographie. Le mappage JiBX fournit différents types de mappage, tels que le mappage abstrait et l'héritage de mappage.

Voyons comment définir un mappage abstrait:


    

        
            ...
            
        
        
        
        
    

    
        
    

Voyons comment cela se lie aux objets Java:

public class Customer {
    private Person person;
    ...
    private Phone homePhone;
    private Phone officePhone;

    // standard getters and setters

}

Ici, nous avons spécifié plusieurs champsPhone dans la classeCustomer. LePhone lui-même est à nouveau un POJO:

public class Phone {

    private String number;

    // standard getters and setters
}

En plus des mappages réguliers, nous pouvons également définir des extensions. Chaque mappage d'extension fait référence à un mappage de base. Au moment du marshaling, le type d'objet réel détermine le mappage XML à appliquer.

Voyons comment fonctionnent les extensions:


    
        
    
    ...
    
        
        ...
    
    ...

Examinons les objets Java correspondants:

public class Identity {

    private long customerId;

    // standard getters and setters
}

5. Conclusion

Dans cet article rapide, nous avons exploré différentes manières d’utiliser le JiBX pour convertir du XML en / à partir d’objets Java. Nous avons également vu comment utiliser des définitions contraignantes pour travailler avec différentes représentations.

Le code complet de cet article est disponibleover on GitHub.