IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Robusta Web Library : Simplifiez REST et Ajax


précédentsommairesuivant

VI. Very Simple XML

VI-A. Définition par l'exemple

Le code xml suivant permet de créer un nouvel utilisateur :

 
Sélectionnez
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:user='http://user.com' xmlns:datas='http://www.exemple.com/datas'>

Posting new User
<user:firstname>Penny</user:firstname>
<user:lastname lastname="Money"/>
<datas:email where="JustAfter"/>
moneypenny@mi5.co.uk
</root>

Il y a quand même plus de chances que la requête envoie :

 
Sélectionnez
<root>
    <firstname>Penny</firstname>
    <lastname>Money</lastname>
    <email>moneypenny@mi5.co.uk</email>
</root>

Le dernier exemple est appelé VerySimpleXml et 95 % de vos requêtes seront similaires. Robusta fournit des outils pour créer et lire très efficacement ces « documents ».

VI-B. SAX ou JDOM ?

Robusta propose une implémentation avec Sax (VsxSax), et une implémentation avec Jdom (VsxJdom). Sax est fourni dans la majorité des JVM, alors qu'il vous faudra télécharger Jdom et le mettre dans le ClassPath. Par contre VsxJdom fournit des méthodes supplémentaires pour obtenir un objet de type org.jdom.Document.

Chaque appel à VsxSax nécessite également de parser à nouveau le document. Il n'y a pas encore de Benchmarks, mais il semble logique que VsxJdom sera plus compétitif si vous faites plusieurs travaux sur le même document. Mais ce sera toujours dérisoire face aux autres travaux du serveur.

VI-C. L'interface VerySimpleXml

Voici quelques méthodes parmi les plus utiles.

 
Sélectionnez
public String getValue(String xml, String nodeName) throws XmlException;
public Long getSimpleNumber(String xml, String nodeName) throws XmlException;
public String getPossibleValue(String xml, String nodeName) throws XmlException;
public  String buildVerySimpleXml(Object  ... elements)  throws XmlException;

VI-D. Quelques exemples

Voici un exemple avec Jdom, analysant une requête pour enregistrer un utilisateur.

 
Sélectionnez
@POST
public Response registerUser(String content) {

    VsxJdom vsx=new VsxJdom();
    
     try {
         org.jdom.Document doc = vsx.getDocument(content);
        String email = vsx.getPossibleValue(doc, "email");
        String passwordMD5 =vsx.getPossibleValue(doc, "passwordMD5")
        
            if (!StringUtilities.validateEmail(email) || !StringUtilities.validateMD5(passwordMD5)) {
                throw new IllegalArgumentException("email or password is not valid");
            }
            //other code
    } catch (Exception ex) {
            return classicFailure(ex);
        }
    }

Nous avions déjà vu l'utilisation de buildVerySimpleXml() :

 
Sélectionnez
String xml =  new VsxSax().buildVerySimpleXml("idUser", user.getId(),
            "username", user.getUsername(), "email", user.getEmail(), "lazyToken",lazyToken );

produira :

 
Sélectionnez
<root>
    <idUser>254</idUser>
    <username>jamesbond</username>
    <email>jamesbond@mi5.co.uk</email>
    <lazyToken>abcdefghi==</lazyToken>
</root>

Enfin un exemple avec du XML un peu plus complexe, mais avec toujours une structure simple. La méthode getCouples est très utile pour analyser une liste de Resources.
Soit la variable String xml =

 
Sélectionnez
<root>
    <object><data>Jambalaya</data><beans>75</beans></object>
     <object><data>Cassoulet</data><beans>150</beans></object>
     <object><data>Garbure</data><beans>15</beans></object>
</root>

L'appel getCouples(xml, « data », « beans ») renverra le CoupleList [(« Jambalaya », « 75 »), (« Cassoulet », « 150 »), (« Garbure », « 15 »)].

VI-E. Conclusion

VerySimpleXml peut être utilisé dans tout type de projet Java utilisant des structures XML simples. C'est pourquoi Robusta n'est pas un framework, mais une bibliothèque qui peut accompagner tout type de projets.


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Nicolas Zozol. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.