选择将数据序列化为xml的API是什么?

时间:2013-02-15 11:03:46

标签: java

我需要在会话之间保存用户数据。所以我决定使用二进制序列化并开始在xml中保存数据。经过一些研究,我发现了几个API,即JAXB和xStream。

我查看了xStream的样本,我喜欢它。这很简单。用两个词来说:你给一个对象并接收这个对象的.xml表示。读取xml并重新接收对象。

然后我读到了JAXB - 它非常强大,功能强大。但我发现的所有示例都是关于创建xml架构,基于此架构生成java类等等。目前,我在.xsd中描述我的课程看起来有点费时。我希望它是JAXB用法的许多方面之一。但是我所看到的,有点害怕我。

是否还有其他适合我的任务的API。或者JAXB和xStream的优点和缺点是什么?

2 个答案:

答案 0 :(得分:3)

我会从JAXB开始,因为它内置且易于使用。您不需要以XSD开头。只需在您的课程中添加一些注释即可。

@XmlRootElement(name="doc")
public class Document {
   @XmlElement
   protected Foo foo;
   // ...
}

序列化:

Document doc = new Document();

JAXBContext jc = JAXBContext.newInstance(Document.class);
Marshaller m = jc.createMarshaller();
m.marshal(doc, System.out);

反序列化:

JAXBContext jc = JAXBContext.newInstance(Document.class);
Unmarshaller u = jc.createUnmarshaller();
Document doc = u.unmarshal(System.in);

System.outSystem.in替换为您的实际流,然后您就可以开始了。

在JAXB教程中有一个关于JAXB注释的简短教程:

答案 1 :(得分:0)

当JAXB有点过于强大,而更简单的解决方案可能更好时,我通常会尝试Castor

好的部分是,您可以使用简单的内省模式,快速简便,如果您觉得需要更多地控制生成的XML,请添加描述符或映射,但两者都是可选的。

相关问题