2010-06-08 8 views
5

Disons que j'ai la classe suivante:conversion xml automatique scala

Personne de classe (val firstName: String, val lastName: String)

est-il un moyen automatique pour générer des xml de cette classe sans avoir créer manuellement une méthode toXml()? Idéalement, la sortie serait quelque chose comme:

 
    <Person> 
     <firstName>John</firstName> 
     <lastName>Smith</lastName> 
    </Person> 

Il semble qu'il devrait y avoir un moyen de le faire sans avoir à écrire tout cela manuellement. Peut-être y a-t-il un trait que je n'ai pas encore trouvé?

Répondre

3

Malheureusement, je ne pense pas qu'il y ait un tel trait de magie. Vous pouvez utiliser quelque chose comme XStream pour accomplir ceci. Cependant, il ne semble pas que toutes les classes Scala soient imprimées automatiquement, donc vous devez probablement écrire votre propre convertisseur. Someone else l'a déjà fait dans le cas des listes, je suppose que pour votre exemple, vous pourriez avoir besoin de quelque chose de similaire.

5

Pour case classes (ou d'autres sous-classes de Product), cela a été une fois très facile à écrire génériquement: le nom peut être récupéré avec productPrefix, toutes les valeurs sont itérables via productIterator et les noms des champs via productElementName.

Malheureusement, productElementName n'a eu une vie très courte: il a été ajouté dans revision 20958 et enlevé dans revision 21223, apparemment parce qu'il a ajouté trop de poids aux classes de cas (il y a aussi un open ticket pour elle).