¿Cuál es la tecnología más simple de usar disponible para guardar un gráfico de objetos Java arbitrario como un archivo XML (y para poder rehidratar los objetos más adelante)?Guardar gráficos de objeto Java como archivo XML
Respuesta
La manera más fácil aquí es serializar el gráfico del objeto. Java 1.4 tiene soporte integrado para la serialización como XML.
Una solución que he utilizado con éxito es xstream (http://x-stream.github.io/)- es una pequeña biblioteca que le permitirá fácilmente que para serializar y deserializar hacia y desde XML
La desventaja es que puede muy limitada definir el XML resultante;. El cual podría no ser lo necesite en su caso
Apache digestor es bastante fácil: http://commons.apache.org/digester/
JAXB es nuevo y viene con la bondad anotación: https://jaxb.dev.java.net
java.beans.XMLEncoder tal vez?
xstream es muy simple http://x-stream.github.io/
xstream es una biblioteca sencilla para serializar objetos a XML y viceversa.
simple API es, así, simple es muy bueno http://simple.sourceforge.net/
también puede utilizar xstream:.!. http://www.ibm.com/developerworks/library/x-xstream/index.html
XStream por la gente en Thoughtworks tiene una API simple e incluso trata con cosas como referencias duplicadas y circulares. Parece estar activamente desarrollado y está bien documentado.
Si está realmente interesado sólo en la serialización de los objetos a un archivo y luego deserializar más tarde, entonces es posible que echa un vistazo a YAML en lugar de XML. Es mucho más fácil trabajar con YAML que con XML y los archivos de salida son legibles por humanos (lo que puede o no ser un requisito). Consulte yaml.org para obtener más información. He usado JYAML con éxito en un proyecto reciente.
Si necesita controlar la estructura del XML, XStream es una buena opción. Puede usar anotaciones para definir con precisión la estructura/mapeo del XML y sus objetos.
Utilice java.beans.XMLEncoder
. Su API es muy simple (de hecho un poco demasiado simple, sería bueno conectarlo a un SAX ContentHandler), pero funciona en muchos gráficos al instante, y es fácil crear su propio delegado de persistencia para cualquier las clases de pelota que puede encontrar.
- La sintaxis utilizada por XMLDecoder permite que permite invocar cualquier método de instancia, o estáticos, incluyendo constructores, por lo que es extremadamente flexible.
- Otros codificadores llaman elementos y atributos después de la clase y nombres de campo, por lo que no hay un esquema fijo para el resultado. El XML de XMLEncoder sigue una DTD simple y puede ser fácilmente validado o transformado, incluso cuando nunca ha visto los tipos que utiliza.
- Puede asignar objetos con un identificador y hacer referencia a ellos en todo el gráfico.
- Puede consultar las constantes definidas en clases o interfaces.
Y está incorporado en Java SE, por lo que no necesita enviar una biblioteca adicional.
JAX-B es parte de las API estándar y realmente fácil de usar.
Sería el segundo (o tercero) XStream. Lee y escribe XML sin necesidad de ninguna configuración de enlace especial o colocando muchas sintaxis extrañas en el XML.
Si necesita control sobre el XML que se genera, recomiendo echar un vistazo a Betwixt (http://commons.apache.org/betwixt/) - agrega mucha funcionalidad al digestor de Apache (Digester es bueno para construir gráficos de objeto de XML, pero no bueno para generarlos).
Si realmente no te importa el XML que se genera (solo que se puede deserializar en el futuro), entonces las clases XMLEncoder/Decoder integradas en Java o bien, siempre y cuando los objetos que estás serializando sigan la especificación JavaBean. El área más grande en la que he tenido problemas con la solución XMLEncoder/Decoder es si tienes un bean que devuelve una lista inmutable para una de sus propiedades: el codificador no maneja esa situación muy bien.
Aunque XStream y JAXB pueden serializar algunos gráficos de objetos con éxito, no pueden manejar gráficos muy complejos. La solución más poderosa para gráficos complejos grandes es http://simple.sourceforge.net/ que puede manejar cualquier gráfico. Además, es rápido y fácil de usar sin ninguna dependencia.
I put together a list con una gran cantidad de bibliotecas de serialización XML y su licencia
- 1. Guardar matriz como xml
- 2. Guardar como XML con VBA?
- 3. Guardar Open XML como PDF
- 4. Python Guardar como archivo
- 5. Guardar gráficos en Haskell
- 6. guardar un objeto BufferedImage a Amazon S3 como un archivo
- 7. Guardar archivo XML en AS3 es posible
- 8. Cómo serializar y guardar un objeto de base de datos como XML utilizando LINQ to SQL
- 9. de tener objeto PowerShell guardar como XML y la carga en C#
- 10. guardar System.Net.mail.MailMessage como archivo .msg
- 11. Guardar una imagen gráfica Java 2d como archivo .png
- 12. C#: Renderizar objeto como XML
- 13. Objeto PHP como documento XML
- 14. Java: Guardar StreamResult en un archivo
- 15. ¿Es posible guardar archivos de MySQL Workbench como XML simple?
- 16. PHP mPDF guardar archivo como PDF
- 17. C# - Guardar lista <T> al archivo XML
- 18. propiedades elásticas archivo como XML
- 19. Cómo guardar una Imagen Buffered como un Archivo
- 20. ¿Cómo guardar el objeto C++ en un archivo xml y restaurar de nuevo?
- 21. Objeto de gráficos para el archivo de imagen
- 22. ¿Cómo guardar, exportar o convertir un Android XML Drawable como un archivo de imagen PNG?
- 23. Cómo guardar un objeto en un archivo en Delphi
- 24. ¿Se puede guardar el objeto de mapa de bits como formato de archivo PNG o JPEG
- 25. Groovy editar archivo XML, guardar comentarios, saltos de línea
- 26. ¿Cómo guardar un archivo XML en un disco con python?
- 27. ¿Cómo guardar el objeto gráfico como imagen en C#?
- 28. Gráficos 2D de juegos Java
- 29. ¿Cómo guardar y actualizar los valores en el archivo xml?
- 30. ¿Guardar un gráfico de Google como SVG?
Incluso ahora, en 2013, xstream todavía funciona perfectamente. – Andrew