vendredi 5 décembre 2008

Utiliser XStream rapidement


Méthodes importantes



Definir une classes



alias("MY_TABLE", MyType.class);


Definir un champ



aliasField("MY_TABLE", MyType.class, "fieldName");


Definir un attribut



aliasAttribute(MyType.class, "fieldName","attribute-name");


Ignorer des champs



omitField(CaptureSacapt.class, "mareeId");


Questions diverses



Utiliser un format de date compatible avec les XSD



registerConverter(new ISO8601DateConverter());


Il est nécessaire pour ceci d'ajouter à son fichier POM

<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>1.5.2</version>
</dependency>



Changer l'ordre des champs


La manière la plus simple de changer l'ordre d'apparition des balise dans le XML généré est tout simplement de changer l'ordre des champs à l'intérieur de la classe.

L'autre méthode consiste à se servir d'un trieur de champs.

SortableFieldKeySorter sorter = new SortableFieldKeySorter();
sorter.registerFieldOrder(MyType.class,
new String[] { "firstToSerialize",
"secondToSerialize",
"thirdToSerialize" }
);
xstream = new XStream(new Sun14ReflectionProvider(new FieldDictionary( sorter)));



Les éléments nuls


Il n'existe pas de manière simple de traiter les chaine vide comme des nulles. Il est nécessaire d'implémenter un convertisseur et de l'enregistrer.


Validation par XSD


Un XML est validé par XSD

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
spf.setValidating(true);
SAXParser sp = spf.newSAXParser();
sp.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
InputStream schemaIs = getClass().getResourceAsStream("/my-validator.xsd");
sp.setProperty(JAXP_SCHEMA_SOURCE, schemaIs);
XSDHandler handler = new XSDHandler();
sp.parse(file, handler);

Aucun commentaire: