将任意Java对象图保存为XML文件(以及以后能够对对象进行再水化)的最简单易用的技术是什么?
答案 0 :(得分:8)
这里最简单的方法是序列化对象图。 Java 1.4内置了对XML序列化的支持。
我成功使用的解决方案是XStream(http://x-stream.github.io/)-它是一个小型库,可以轻松地对XML进行序列化和反序列化。
缺点是你只能非常有限地定义生成的XML;在你的情况下可能不是必要的。
答案 1 :(得分:4)
Apache digester非常简单:http://commons.apache.org/digester/
JAXB更新,带有注释优点:https://jaxb.dev.java.net
答案 2 :(得分:4)
Thoughtworks的人们使用XStream有一个简单的API,甚至可以处理重复和循环引用等内容。它似乎是积极开发的,并且有很好的文档记录。
答案 3 :(得分:3)
使用java.beans.XMLEncoder
。它的API非常简单(实际上有点太简单了;将它连接到SAX ContentHandler会很好),但它适用于许多开箱即用的图形,并且很容易为任何奇数创建自己的持久性委托 - 你可能会遇到的球类。
而且,它内置于Java SE中,因此您无需发布额外的库。
答案 4 :(得分:3)
虽然XStream和JAXB可以很好地序列化一些对象图,但它们无法处理非常复杂的图形。对于大型复杂图形,最强大的解决方案是Simple XML Serialization。它可以处理任何图形。此外,它使用起来快速而简单,没有任何依赖性。
引用简单项目页面:
Simple是Java的高性能XML序列化和配置框架。其目标是提供一个XML框架,支持快速开发XML配置和通信系统。该框架以最小的努力和减少的错误帮助XML系统的开发。它提供完整的对象序列化和反序列化,维护遇到的每个引用。实质上,它类似于Java平台的C#XML序列化,但提供了拦截和操作的附加功能。
答案 5 :(得分:2)
Simple API很简单!真的很棒。 http://simple.sourceforge.net/
您也可以使用XStream:http://www.ibm.com/developerworks/library/x-xstream/index.html
答案 6 :(得分:2)
JAX-B是标准API的一部分,非常易于使用。
答案 7 :(得分:2)
如果您需要控制生成的XML,我建议您查看Betwixt(http://commons.apache.org/betwixt/) - 它为Apache的消化器添加了许多功能(Digester适用于从XML构建对象图,但是生成它们并不是那么好。)
如果你真的不关心生成的XML(只是它可以在将来反序列化),那么构建到Java或者很好的XMLEncoder / Decoder类 - 只要你序列化的对象遵循JavaBean规范。我遇到XMLEncoder / Decoder解决方案问题的最大区域是,如果你有一个bean为它的一个属性返回一个不可变列表 - 编码器不能很好地处理这种情况。
答案 8 :(得分:1)
XStream非常简单http://x-stream.github.io/
XStream是一个简单的库,用于将对象序列化为XML,然后再返回。
答案 9 :(得分:1)
如果需要控制XML的结构,XStream是一个不错的选择。您可以使用注释来精确定义XML和对象的结构/映射。
答案 10 :(得分:1)
我是第二个(或第三个)XStream。它可以读取和写入XML,而无需任何特殊的绑定配置或在XML中放置大量无关的语法。
答案 11 :(得分:1)
我put together a list包含许多xml序列化库及其许可证
答案 12 :(得分:0)
答案 13 :(得分:0)
Jackson Project是XML,JSON和其他格式的处理和绑定库。
…Jackson是一套用于Java(和JVM平台)的数据处理工具,包括旗舰级流JSON解析器/生成器库,匹配的数据绑定库(与JSON之间的POJO)和附加的数据格式模块。处理以Avro,BSON,CBOR,CSV,Smile,(Java)属性,Protobuf,XML或YAML编码的数据;甚至是大量的数据格式模块,以支持广泛使用的数据类型的数据类型,例如Guava,Joda,PCollections以及许多很多其他数据……
答案 14 :(得分:-1)