2010-06-08 15 views
5

Digamos que tengo la clase siguiente:conversión xml automática en Scala

clase Persona (val nombre: String, val lastName: String)

¿Hay una manera automática para generar XML a partir de esta clase sin tener ¿para crear a mano un método toXml()? Lo ideal sería que la salida sería algo así como:

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

Parece que debe haber una manera de hacer esto sin tener que escribir todo lo que de forma manual. Tal vez hay un rasgo que no he encontrado todavía?

Respuesta

3

Lamentablemente, no creo que haya un rasgo tan mágico. Puede usar algo como XStream para lograr esto. Sin embargo, no parece imprimir todas las clases de Scala de forma bastante automática, por lo que probablemente necesite escribir su propio convertidor. Someone else ya lo ha hecho en el caso de las Listas, supongo que para su ejemplo podría necesitar algo similar.

5

Para case clases (u otras subclases de Product), esta vez fue muy fácil escribir de forma genérica: el nombre puede ser recuperada con productPrefix, todos los valores son iterables través productIterator y los nombres de los campos a través de productElementName.

Desafortunadamente, productElementName sólo ha tenido una vida muy corto: lo que se añadió en revision 20958 y se retira en revision 21223, aparentemente porque se añade demasiado peso a las clases de casos (también hay un open ticket para ello).