16 octobre 2016

avc-binding-dom sur Maven Central

Ma petite bibliothèque open source de binding Java/XML est disponible sur Maven Central :
<dependency>
 <groupId>net.avcompris.commons</groupId>
 <artifactId>avc-binding-dom</artifactId>    
 <version>0.1.10</version>
</dependency>
Et le source est toujours sur BitBucket :
https://bitbucket.org/avantage-compris/avc-binding-dom
Rappel de son utilisation par un exemple :

Soit un document XML de la forme suivante :
<aaaa>
 <bbbb width="34" height="58">
  <cccc weight="19k">one</cccc>
  <cccc weight="812m">two</cccc>
  <cccc weight="7x8">three</ccc>
 </bbbb>
</aaaa>
Vous écrivez une interface Java de binding sous la forme suivante :
interface Foo { 

    @XPath("bbbb/@width")    
    int getWidth();
    
    @XPath("bbbb/@height")    
    int getHeight();
    
    @XPath("cccc")    
    Bar[] getBars();
    
    interface Bar {
        
        @XPath("@weight")        
        String getWeight();                
        
        @XPath(".")        
        String getContent();    
    }
    
    @XPath("cccc[@weight = $arg0]")    
    Bar getBarByWeight(String x);
}
Et vous pouvez alors écrire le code Java suivant, qui va directement puiser les valeurs dans le DOM  :
Foo foo = DomBinderUtils.xmlContentToJava(..., Foo.class); 

assertEquals(34, foo.getWidth()); 

assertEquals(3, foo.getBars().length); 

assertEquals("19k", foo.getBars()[0].getWeight()); 

assertEquals("two", foo.getBarByWeight("812m").getContent());

Voir sur ce blog d’autres articles sur le même sujet :