当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《XMLEncoder和XStream的相对优势是什么?》经验,为你挑选了1个好方法。

假设我想在XML中存储许多小配置对象,我不太关心格式.内置到JDK中的XMLDecoder类可以工作,从我听到的,XStream以类似的方式工作.

每个图书馆有哪些优势?



1> Jay R...:

我非常喜欢XStream 库.由于提供了Java对象,它在输出相当简单的xml方面做得非常好.它也非常适合从xml中重现对象.而且,无论如何,我们的第三方图书馆之一已经依赖它.

我们选择使用它是因为我们希望我们的xml是人类可读的.使用别名功能可以使它更好.

如果希望某个对象的某些部分以更好的方式反序列化,则可以扩展库.我们在一个案例中做到了这一点,因此文件将具有经度和纬度的一组度,分和秒,而不是两个双精度.

两分钟的教程总结了基本用法,但为了将信息保存在一个地方,我会试着在这里总结一下,只是稍微缩短一点.

// 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);

您的输出将如下所示:


  Joe
  
    123
    1234-456
  

回去:

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

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

如果不为名称添加别名,XStream将输出完整的类名.如果上面的Person类有

package example;
xml将具有"example.Person"而不仅仅是"person".

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有