October 18th 2003 oXerp Documentation SourceForge.net Logo
Introduction Installation Créez une société Créez un tiers Créez un produit Créez une commande Créez une facture Personnalisez vos factures Personnaliser les conditions de paiment Import-export Clôturer une période Marshalling java-xml Comprendre les fichiers de config Ajoutez des extra info à un object
Marshalling java-xml
Principes

Oxerp utilise un marshaller/unmarshaller custom. Les classes de ce marshaller sont dans les packages org.oxerp.xml.*.

Fichier de mapping

Le marshaller utilise un fichier de mapping. Son format est compatible avec celui du projet Castor (org.exolab.xml). En conséquence, vous pouvez utiliser les tags XDoclet castor pour le générer. Une section de ce fichier de mapping :

<class name='org.oxerp.xml.test.ClassTest'> <map-to xml='product' /> <field name='categ' type='java.lang.String' direct='true'> <bind-xml name='category' node='attribute' /> </field> <field name='lib' type='string' direct='true'> <bind-xml name='libelle' /> </field> <field name='d' type='date'> <bind-xml name='date' node='attribute' /> </field> <field name='examples' type='string' collection="collection"> <bind-xml name='col-ex' node='element' /> </field> <field name="inner" type="org.oxerp.xml.test.ClassTestInner"> <bind-xml name="inner" /> </field> <field name='inners' type="org.oxerp.xml.test.ClassTestInner" collection="collection"> <bind-xml name='inners' node='element' /> </field> <field name='paymentConditions' type="org.oxerp.xml.test.ClassTestAbstract"> <bind-xml name='payment-conditions' node='element' /> </field> <field name='examplesSet' type='string' collection="set"> <bind-xml name='col-ex-set' node='element' /> </field> </class>

Types simples personnalisés

Vous pouvez mettre en place vos propres types simples. Pour cela, créez une sous-classe de org.oxerp.xml.SimpleType, definissez les méthodes format, parse et getClassType. Ajoutez ensuite une section "simple-type" dans le fichier de mapping (cette partie est incompatible avec le format Castor) ; l'attribut name est le nom du type de base, que vous réutiliserez dans les attributs field d'une classe Voir org.oxerp.xml.test.SimpleTypeDecimal avec oxerp_mapping.xml dans oxerp-marshaller.jar.

<simple-type name="decimal" class="org.oxerp.xml.test.SimpleTypeDecimal"/>

API calls

Mapping m = new Mapping(); try { m.loadMapping("oxerp_mapping.xml"); unmarshaller = new Unmarshaller(); unmarshaller.setMapping(m); Reader reader = new BufferedReader(new FileReader(file)); Object o = unmarshaller.unmarshal(reader, ClassTest.class); ClassTest ct = (ClassTest)o; Marshaller marshaller = new Marshaller(); marshaller.setMapping(m); Writer w = new BufferedWriter(new FileWriter(file)); marshaller.marshal(o, w); w.close();