Aide mémoire : la (dé)sérialisation XML en Java avec jaxb

Aide mémoire (Développement) / Uncategorized
Petit aide mémoire pour la (dé)sérialisation XML en Java avec JAXB.

1. Les annotations
2. Conversion java –> XML
3. Conversion XML –> java
4. Exemple
5. Sources

1. Les annotations

Pour pouvoir convertir des objets Java en XML (ou réciproquement), il suffit juste d’ajouter des annotations sur la classe à convertir.

Ces annotations font parties du package javax.xml.bind.annotation qui est inclus dans la JRE.

Les annotations suivantes peuvent être mise sur la classe:

  • @XmlRootElement : définit le nom (name) du tag XML a utiliser. On peut également préciser le namespace
  • @XmlType : définit l’ordre d’écriture des éléments (propOrder), mais aussi d’autres trucs que j’ai pas encore utilisé
  • @XmlAccessorType : permet de choisir où seront posé les annotations des éléments de la classe : les getter/setter (XmlAccessType.PROPERTY), les attributs (XmlAccessType.FIELD) ou autre.

Suivant la valeur passé à @XmlAccessorType, vous pouvez rajoutez les annotations suivantes sur les éléments de la classe (par défaut, il faudra les mettre sur les getters) :

  • @XmlAttribute : ajoute un attribut au tag définit par @XmlRootElement, on peut définir le nom (name), la présence (required) et le namespace
  • @XmlElement : ajoute un sous tag à celui définit par @XmlRootElement, on peut définir le nom (name), la présence (required), la valeur par défaut (defaultValue) le type, le namespace et nillable
  • @XmlElementWrapper : dans le cas d’une liste, permet d’englober les éléments de la liste, on peut définir le nom (name), la présence (required), le namespace et nillable

2. Conversion java –> XML

Pour convertir un objet java annoté en XML :

    JAXBContext context = JAXBContext.newInstance(T.class);
    Marshaller m = context.createMarshaller();
    m.setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    m.marshal (object2convert, outputStream);


T doit être la classe à convertir, object2convert une instance de T. La variable outputStream doit être un flux sortant (System.out, File, etc. ).

3. Conversion XML –> java

Pour convertir un XML en objet java :

    JAXBContext context = JAXBContext.newInstance(T.class);
    Unmarshaller um = context.createUnmarshaller();
    T object2convert = (T) um.unmarshal(inputStream);


T doit être la classe à convertir, object2convert une instance de T. La variable inputStream doit être un flux entrant (System.in, FileReader, etc. ).

4. Exemple

import javax.xml.bind.annotation.XmlAccessType ;
import javax.xml.bind.annotation.XmlAccessorType ;
import javax.xml.bind.annotation.XmlAttribute ;
import javax.xml.bind.annotation.XmlRootElement ;
import javax.xml.bind.annotation.XmlType ;

@XmlRootElement(name = "book")
@XmlType(propOrder = {"author", "name", "publisher", "isbn"})
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Book {

    private String name;
    private String author;
    private String publisher;
    private String isbn;

    @XmlAttribute(name = "title")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlAttribute(name = "author")
    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @XmlAttribute(name = "publisher")
    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    @XmlAttribute(name = "isbn")
    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
}

import java.util.ArrayList ;
import javax.xml.bind.annotation.XmlAccessType ;
import javax.xml.bind.annotation.XmlAccessorType ;
import javax.xml.bind.annotation.XmlAttribute ;
import javax.xml.bind.annotation.XmlElement ;
import javax.xml.bind.annotation.XmlElementWrapper ;
import javax.xml.bind.annotation.XmlRootElement ;

@XmlRootElement(name = "bookstore")
@XmlAccessorType(XmlAccessType.FIELD)
public class Bookstore {

    @XmlElementWrapper(name = "bookList")
    @XmlElement(name = "book")
    private ArrayList bookList;
    @XmlAttribute(name = "name")
    private String name;
    @XmlAttribute(name = "location")
    private String location;

    public void setBookList(ArrayList bookList) {
        this.bookList = bookList;
    }

    public ArrayList getBooksList() {
        return bookList;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }
}

Ce qui donne une fois passé dans la moulinette pour convertir en XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore location="Frankfurt Airport" name="Fraport Bookstore">
	<bookList>
		<book isbn="978-0060554736" publisher="Harpercollins" title="The Game" author="Neil Strauss"/>
		<book isbn="978-3832180577" publisher="Dumont Buchverlag" title="Feuchtgebiete" author="Charlotte Roche"/>
	</bookList>
</bookstore>

Sans la présence de l’annotation @XmlElementWrapper, vous obtiendrez :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore location="Frankfurt Airport" name="Fraport Bookstore">
	<book isbn="978-0060554736" publisher="Harpercollins" title="The Game" author="Neil Strauss"/>
	<book isbn="978-3832180577" publisher="Dumont Buchverlag" title="Feuchtgebiete" author="Charlotte Roche"/>
</bookstore>

Voici le code de sérialisation/désérialisation vers une String :

    public static  String getXml(final T object2convert) {
        final StringWriter writer = new StringWriter();
        try {
            final JAXBContext context = JAXBContext.newInstance(object2convert.getClass());
            final Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            m.marshal(object2convert, writer);
        } catch (final Exception e) {
            // Assert.fail(e.getMessage()); 		
            e.printStackTrace();
        }
        return writer.toString();
    }

    @SuppressWarnings("unchecked")
    public static  T fromXml(final String xml, final Class classe) {
        if (xml != null) {
            try {
                final InputStream is = new ByteArrayInputStream(xml.getBytes());
                final JAXBContext context = JAXBContext.newInstance(classe);
                final Unmarshaller um = context.createUnmarshaller();
                return (T) um.unmarshal(is);
            } catch (final Exception e) { 			
                // Assert.fail(e.getMessage()); 			
                e.printStackTrace(); 		
            } 	
        } 	
        return null; 
    }

5. Sources

http://www.vogella.com/articles/JAXB/article.html

Mes (anciennes) productions

Tutoriels / Uncategorized
Voilà la liste actuelle de mes productions (une copie de ces pages se trouve ici):

Comment monter un réseau rapidement

Merci à Crazy_Girl pour son ordinateur, avec ce tutoriel, vous pourrez créer un réseau domestique très rapidement, ainsi qu’installer une passerelle internet

Comment convertir des fichiers *.BWA en *.MDS

Très pratique pour copier une Securom quand on a pas l’analyse DPM pour Alcohol.

Comment Utiliser le Rippeur d’AnyDVD ?

Comment ripper un DVD qui ne passe pas dans les autres programmes.

Guide très rapide pour copier un jeu pc

Le minimum à savoir pour créer sa copie de sauvegarde avec le minimum de problèmes.

Présentation d’Alcohol 120%

Autrement dit comment s’en servir pour dupliquer vos CD ou DVD.

Présentation d’Alcohol 52%

Alcohol 52% reprend juste le moteur de lecture et d’émulation d’Alcohol 120% (de plus il est gratuit).

Présentation d’A-ray scanner

Ou comment détecter la protection anti copie d’un jeu installé.

Présentation de Blindwrite 5 / 6

Ou comment s’en servir pour créer ses copies de sauvegardes.

Présentation de CloneCD

Un concurent d’Alcohol 120% et de Blindwrite.

Présentation de CloneCD Fan Profiler

Ce programme permet de créer des profils CD /DVD pour CloneCD.

Présentation de CloneDVD

Ou comment s’en servir pour créer les copies de sauvegardes de ses films au format DVD.

Présentation de CloneDVD Mobile

Ou comment s’en servir pour créer les copies de sauvegardes de ses films sur des formats Mobiles.

Présentation de Copy Discovery 2000

Comment détecter une protection sur un disque ?

Présentation de Daemon Tools

Comment monter ou démoter une image disque dans un lecteur virtuel.

Présentation de Daemon Tools Pro

Comment créer une image disque, et la monter ou démoter dans un lecteur virtuel.

Présentation de Droppix recorder

Un concurrent de Nero qui n’a rien à lui envier.

Présentation de Gamejack 5 / 5star Game Copy

Ecrit avec Zell, basé sur la version anglaise du programme. Permet de réaliser des copies de sauvegarde, ainsi que des CD de données.

Présentation de Protection ID 5

Ou comment détecter la protection anti copie d’un jeu installé.

Présentation de TwinPeak

Comment réaliser une copie fonctionnelle de SecuROM avec CloneCD.

Présentation de Virtual CloneDrive

Un concurent de Daemon Tools, produit par Slysoft.

Présentation de YASU

Ce programme permet à Daemon tools d’émuler les jeux protégés par Safedisc et Securom sans être embeter par leus listes noires.

Se repèrer sur sa carte mère

Qu’est ce que c’est que ce truc avec un ventilo à côté du truc plat ?

Toutes ces productions sont mises à disposition sous un contrat Creative Commons:

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons.

Comment se repérer sur sa carte mère

Tutoriels Hardware / Uncategorized

Se repérer sur sa carte mère

Par: pseudo555

Comment se repérer sur sa carte mère

Pour tout ceux et celle qui se perdent sur leur carte mères, voici un petit plan. Avant de commencer, il s’agit d’une photo de ma carte mère, dotés de certains périphériques que vous n’avez pas forcement sur votre carte mère.


1 –> Branchement du processeur ( ici il s’agit du socket 478 ).
2 –> Emplacement pour la mémoire ( ici de la ddr ).
3 –> Branchement de l’alimentation de la carte mère ( au format ATX ).
3b –> Branchement de l’alimentation de la carte mère ( au format ATX-12v ).
4 –> Port servant à brancher le lecteur de disquette ( en voie de disparition )
5 –> Port IDE , vous permet de brancher des disques durs, des lecteurs / graveur de cd / dvd.
6 –> Pile du bios , à enlever pour faire un clear cmos (sauf si un cavalier/jumper est fait pour.
7 –> Port SATA , norme qui va remplacer l’ide.
8 –> Port 1394 : connecteur ieee 1394.
9 –> Connexion tour – carte mère , ici vous devez brancher une bonne partie des câbles venant du boiter.
10 –> Connexion USB , pour branchement en façade.
11 –> Port RAID , ( fonction spéciale de la carte mère ).
12 –> Bios de la carte mère ( Dual bios par gigabyte ).
13 –> Port PCI .
14 –> Port AGP , ( va être remplacer par du pci express, voir n°24 ).
15 –> Sous le ventilateur, c’est le chipset de la carte mère .
16 –> Carte son interne .
17 –> Port Usb externe .
18 –> Port parallèle .
19 –> Port Com .
20 –> Ports PS/2 , branchement du clavier et de la souris, si ils ne sont pas en usb.
21 –> DSP2 , technologie Gigabyte ( dual power system ).
22 –> Port fan , branchement de ventilateur :
Sur celui qui est près du processeur, on branche le ventilrad ( ventilateur du processeur ), sur les deux autres, des ventilateurs externes ( un pour les disques durs par exemple ).
23 –> Port PCI-Express 1x .
24 –> Port PCI-Express 16x , pour brancher votre cartes graphiques. Certaines cartes mère propose deux ( ou quatre ) port PCI-Express 16X pour brancher plusieurs cartes graphiques. Selon le type de GPU (processeur de la carte graphique), on parle de SLI (Nvidia) ou de Crossfire (ATI).

Les bips des bios

Pour les bios AMI

1 bip court –> Erreur de rafraîchissement de la RAM .
2 bips courts –> Erreur de parité dans les 64 premiers Ko de la mémoire .
3 bips courts –> Echec mémoire dans les premiers 64Ko .
4 bips courts –> Echec Timer .
5 bips courts –> Problème avec le processeur .
6 bips courts –> Echec clavier .
7 bips courts –> Erreur du mode virtuel Carte-mère défectueuse .
8 bips courts –> Le contrôleur vidéo manque ou la RAM est défectueuse .
9 bips courts –> Erreur de la ROM du BIOS .
10 bips courts –> Erreur d’accès à la mémoire CMOS .
11 bips courts –> Erreur du cache mémoire .

Pour les bios AWARD

1 Bip court –> Fonctionnement normal .
2 Bips courts –> Erreur dans le CMOS .
1 Bip long, 1 court –> Problème avec une barette de RAM .
1 Bip long, 2 court –> Erreur d’accès à la carte graphique .
1 Bip long, 3 court –> Erreur d’accès au contrôleur clavier .
1 Bip long, 9 court –> Erreur de la ROM du BIOS .
Bips long continus –> Problème avec une barette de RAM .
Bips court continus –> Erreur d’alimentation .

 

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons .

Version 1.0 – Mise en page 1.0