Java 使用Simple将不同对象的ArrayList写入XML文件

Java 使用Simple将不同对象的ArrayList写入XML文件,java,xml,Java,Xml,我有两门课: package main; public class A { protected String name; protected int age; public A(String name, int age) { this.name = name; this.age = age; } } 以及将这些类的实例添加到ArrayList的第三个类: package main; import java.util.ArrayL

我有两门课:

package main;
public class A {
    protected String name;
    protected int age;

    public A(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
以及将这些类的实例添加到ArrayList的第三个类:

package main;
import java.util.ArrayList;
import java.util.List;
public class Arr {
    List<Object> lst = new ArrayList<Object>();

    public void add_to_array(Object o) {
        lst.add(o);
    }
}
并尝试将它们写入XML文件:

package main;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;
import java.io.File;
import java.io.IOException;
import java.util.List;

public class XML {
    public void create(List<Object> lst) throws IOException {
        try {
            Serializer serializer = new Persister();
            File result = new File("example.xml");
            for (int i = 0; i < lst.size(); ++i) {
                serializer.write(lst.get(i), result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
<b>
   <v>1</v>
   <v2>21</v2>
   <v3>42</v3>
</b>
packagemain;
导入org.simpleframework.xml.Serializer;
导入org.simpleframework.xml.core.Persister;
导入java.io.File;
导入java.io.IOException;
导入java.util.List;
公共类XML{
公共无效创建(列表lst)引发IOException{
试一试{
Serializer Serializer=new Persister();
文件结果=新文件(“example.xml”);
对于(inti=0;i
我得到以下XML文件:

package main;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;
import java.io.File;
import java.io.IOException;
import java.util.List;

public class XML {
    public void create(List<Object> lst) throws IOException {
        try {
            Serializer serializer = new Persister();
            File result = new File("example.xml");
            for (int i = 0; i < lst.size(); ++i) {
                serializer.write(lst.get(i), result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
<b>
   <v>1</v>
   <v2>21</v2>
   <v3>42</v3>
</b>

1.
21
42
但是,我打算得到以下结构:

<arr>
    <lst>
        <name>a</name>
        <age>22</age>
    </lst>
    <lst>
        <v>1</v>
        <v2>21</v1>
        <v3>42</v3>
    </lst>
</arr>

A.
22
1.
21
42

我在简单的文档中只找到了关于具有相同对象的数组的信息,而没有找到关于不同对象的信息。

下面的循环使用列表中的最后一个元素覆盖了
example.xml
的内容

for (int i = 0; i < lst.size(); ++i) {
    serializer.write(lst.get(i), result);
}
for(int i=0;i

将循环块的
替换为
序列化程序。写入(lst,result)会帮你的。

我试过了。它导致错误:org.simpleframework.xml.transform.TransformException:不支持类java.util.ArrayList的转换