gpt4 book ai didi

java - XMLEncoder 和 XStream 的相对优势是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 01:52:58 31 4
gpt4 key购买 nike

假设我想在 XML 中存储许多小的配置对象,并且我不太关心格式。 XMLDecoder JDK 中内置的类可以工作,据我所知,XStream以类似的方式工作。

每个图书馆的优势是什么?

最佳答案

我真的很喜欢 XStream图书馆。它在输出相当简单的 xml 方面做得非常好作为提供的 Java 对象的结果。它非常适合复制对象也从 xml 返回。而且,我们的第 3 方库之一反正已经依赖它了。

  • 我们选择使用它是因为我们想要我们的 xml 是人类可读的。使用别名功能使它变得很多更好。

  • 如果你可以扩展库想要一个物体的一部分以更好的方式反序列化。我们在一种情况下这样做所以文件会有一组学位,纬度的分钟和秒和经度,而不是两个 double 。

两分钟的教程总结了基本用法,但在有兴趣将信息放在一个地方,我会尝试总结一下到这里,稍微短一点。

// define your classes
public class Person {
private String firstname;
private PhoneNumber phone;
// ... constructors and methods
}

public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
}

然后使用库写出 xml。

// initial the libray
XStream xstream = new XStream();
xstream.alias("person", Person.class); // elementName, Class
xstream.alias("phone", PhoneNumber.class);

// make your objects
Person joe = new Person("Joe");
joe.setPhone(new PhoneNumber(123, "1234-456"));

// convert xml
String xml = xstream.toXML(joe);

您的输出将如下所示:

<person>
<firstname>Joe</firstname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
</person>

返回:

Person newJoe = (Person)xstream.fromXML(xml);

XMLEncoder 是为 Java bean 序列化而提供的。上次用的时候该文件看起来相当讨厌。如果真的不关心文件的样子,它可以为你工作,你可以避免第三方依赖,这也很好。我希望使序列化更漂亮的可能性对于 XMLEncoder 也是一个更大的挑战。

如果您不使用别名,XStream 会输出完整的类名。如果上面的 Person 类有

package example;
,则 xml 将有“example.Person”而不仅仅是“person”。

关于java - XMLEncoder 和 XStream 的相对优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/96059/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com