Plan du tutoriel :

Intro
objectifs
Développement 
test import/export
Conclusion


Introduction

En informatique, le format XML n’est qu’une représentation des données !  Comment fait-on pour séparer les données de leur représentation et éventuellement passer de l’un à l’autre. En java, de nombreux APIs permettent la transformation des objets java en XML.  Ces APIs sont plus ou moins performantes ; en tout cas, ils sont verbeux et très compliquées à utiliser. C’est probablement cette raison qui a conduit à la création du framework JAXB. Java Architecture for XML Binding (JAXB) est un package standard de Java 1.6+ qui définit la manière dont les objets sont transformés en XML et vice-versa. En Java, ces opérations sont appelées en sérialisation/de-sérialisations ou marshaling/unmarshaling.

 

Que souhaitons –nous développer?

Nous souhaitons exporter les données de Prestashop en utilisant les services web ; dans un deuxième temps,  nous souhaitons choisir le format d’export. Ce n’est pas le format qui nous intéresse en tant que tel, donc nous choisissons un moyen qui nous permette de faire abstraction du XML et de manipuler des objets directement. Puis, dans un deuxième temps,  nous souhaitons choisir le format d’export que ce soit du CSV, du JSON, du texte simple, un document Word, un document Excel natif ou encore un flux RSS. Tout ceci sera possible avec un minimum de lignes de code.

Avantages de JAXB
Les librairies SAX ou DOM sont couramment utilisées pour manipuler des données au format XML. JAXB permet de simplifier l’utilisation de documents XML et fournissant un niveau d’abstraction plus élevé. Sa puissance est telle qu’on arrive à manipuler  du XML sans connaître les techniques de traitement et sans lire le document nœud après nœud. La librairie JAXB permet la génération de code et des classes POJOs.

Dans cet article nous allons manipuler les clients (Customers) de Prestashop. Le schéma nous est imposé. Donc nous ne montrerons pas comment générer les classes java à partir d’un fichier schéma XSD ou d’un modele XML.

Technologies utilisées dans cet article :

  • Java JDK 1.6+
  • JAXB 2.0

Si vous avez une version de java inférieure à 1.5, le code de ce tutoriel ne marchera pas.

Description du tutoriel
Dans ce premier tutoriel, nous allons voir comment sérialiser/dé-sérialiser des objets ‘Customers’ de sorte à générer une réponse à un appel aux services web de Prestashop (1.4+). Pour cela, nous allons créer la classe java appropriée avec les annotations JAXB pour faire la correspondance entre les variables java et les propriétés d’une représentation en XML.

JAXB Annotation.

JAXB utilise des annotations pour faire la liaison entre les propriétés des objets et les nœuds du fichier XML.

XmlElement (name =’Customer’) : définit l’élément XML qui va être utilisé. Il n’est pas indispensable. Par contre il faut impérativement le préciser si le nom de la classe est différent du nom du nœud XML auquel il correspond.
XmlType (propOrder ={….}) : C’est une annotation magique qui permet de définir et de contrôler l’ordre d’écriture et d’apparition des nœuds dans le document XML sérialisé.

La classe Customer est la suivante :

 

Sérialisation/ de- sérialisation

Exporter les clients en XML (génération d’un nouveau document à partir d’objets java)

Créons maintenant la classe de test.

 

 

 Quel résultat obtenons-nous ?

La premiere instruction (methode marshalCustomer) prend un objet java Customer et nous retourne la representaion XML  suivante :

 

 

Ce résultat peut être stocké directement dans un fichier. C’est d’ailleurs ce que nous faisons pour la suite de l’exercice.

La seconde méthode prend un fichier XML en paramètre et nous permet d’afficher l’objet Customer.

Conclusion

De nombreuses variantes montrent comment traiter une liste d’objet stocké dans un fichier XML avec JAXB. Dans notre cas, allons pas à pas, ce fera l’objet d’un autre article si le besoin se fait ressentir.

Nous avons réussi à manipuler des données au format XML sans jamais manipuler du XML.  Nous avons utilisé cette astuce à plusieurs reprises pour importer/exporter des clients avec Prestashop.

Au passage, Easy Retail Manager propose un module Prestashop gratuit pour gérer les clients et les groupes.

 

A suivre
Nous allons utiliser ce code plusieurs dans le prochain, d’abord pour exporter les clients de Prestashop, puis ensuite pour importer les clients en XML.