如何使用 XStream 将对象列表转换为 XML 文档

2022-09-04 07:29:05

如何使用XStream将对象列表转换为XML文档?

以及如何反序列化它?

这是我的xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>  
  <fullname>Guilherme</fullname>
  <age>10</age>
  <address>address,address,address,address,</address>
</person>
<person>  
  <fullname>Guilherme</fullname>
  <age>10</age>
  <address>address,address,address,address,</address>
</person>
</persons>

人豆包含3个字段如何使用自定义转换器将其转换回豆列表?


答案 1

您不一定需要自定义转换器。

您需要一个类来保存您的列表:

public class PersonList {

    private List<Person> list;

    public PersonList(){
        list = new ArrayList<Person>();
    }

    public void add(Person p){
        list.add(p);
    }
}

将列表序列化为 XML:

    XStream xstream = new XStream();
    xstream.alias("person", Person.class);
    xstream.alias("persons", PersonList.class);
    xstream.addImplicitCollection(PersonList.class, "list");

    PersonList list = new PersonList();
    list.add(new Person("ABC",12,"address"));
    list.add(new Person("XYZ",20,"address2"));

    String xml = xstream.toXML(list);

将 xml 反序列化为人员对象列表:

    String xml = "<persons><person>...</person></persons>";
    PersonList pList = (PersonList)xstream.fromXML(xml);

答案 2

只需使用 std toXml 和 fromXml 方法,有关示例,请参阅 http://en.wikipedia.org/wiki/XStream。另请参阅有关默认转化的工作原理 http://x-stream.github.io/converters.html。

好吧,所以默认转换器在你的情况下不会完全工作。您需要遵循:

http://x-stream.github.io/converter-tutorial.html


推荐