Java 使用xstream反序列化包含重复项的xml

Java 使用xstream反序列化包含重复项的xml,java,xstream,Java,Xstream,我试图读入一个xml文件,并将其内容存储为一个对象以供以后使用。我可以使用toXML()方法复制一个类似的对象,并提供示例数据,但是当我在同一对象上调用fromXML()时,我得到一个错误。问题是我有多个fiels实例。xml看起来像这样 <House> <Address> <Number>1234</Number> <Street>Sample St.</Street> <City&

我试图读入一个xml文件,并将其内容存储为一个对象以供以后使用。我可以使用toXML()方法复制一个类似的对象,并提供示例数据,但是当我在同一对象上调用fromXML()时,我得到一个错误。问题是我有多个fiels实例。xml看起来像这样

<House>   
  <Address>
    <Number>1234</Number>
    <Street>Sample St.</Street>
    <City>Sample City</City>
  </Address>
  <Resident>
    <Name>Joe</Name>
    <Age>38</Age>
    <Profession>
      <Title>Engineer</Title>
      <Title>Developer</Title>
    </Profession>
  </Resident>
  <Resident>
    <Name>Cathy</Name>
    <Age>35</Age>
    <Profession>
      <Title>Engineer</Title>
      <Title>Developer</Title>
    </Profession>
  </Resident>
</House>

1234
样本街。
样本城市
乔
38
工程师
开发商
凯西
35
工程师
开发商
所以在这个例子中有两个居民,他们每个人都有两个头衔。我尝试在构造函数中为各自的类将这些标记定义为ArrayList,但这似乎不起作用。如果我只有一个居住者或头衔等的实例,这就可以了

以下是Java代码(从下面的注释中复制):

XStream XStream=newxstream(newdomdriver());
FileReader fin=newfilereader(“path_to_file.xml”);
BufferedReader br=新的BufferedReader(fin);
while(br.ready())
{ 
str+=br.readLine()+“\n”;
} 
House=(House)xstream.fromXML(str);
导入java.util.ArrayList;
公屋{
私人地址;
私人ArrayList居民;
酒店(地址,ArrayList住户){
地址=地址;
居民=居民;
}
公共广播getAddress(){
回信地址;
}
公共无效设置地址(地址){
地址=地址;
}
公共数组列表getResident(){
返回居民;
}
公共无效集合居民(ArrayList居民){
居民=居民;
}
}

以下是如何使用注释来完成

@XStreamAlias("house")
public class House{

@XStreamAlias("Address")
private String address;

@XStreamImplicit
protected List<Resident> residents;

    ...
@XStreamAlias(“房子”)
公屋{
@XStreamAlias(“地址”)
私有字符串地址;
@XStreamImplicit
受保护居民名单;
...
}

在常驻班,你要做:

@XStreamAlias("resident")
public class Resident{

@XStreamAlias("name")
private String name;

@XStreamAlias("age")
private int age;

@XStreamAlias("profession")
private String profession;


@XStreamImplicit
protected List<String> titles

    ...
@XStreamAlias(“居民”)
公务舱居民{
@XStreamAlias(“名称”)
私有字符串名称;
@XStreamAlias(“年龄”)
私人互联网;
@XStreamAlias(“专业”)
私人弦乐专业;
@XStreamImplicit
受保护的列表标题
...
}


请记住处理注释。

能否显示正在调用fromXML()的Java代码?另外,请解释“这似乎不起作用”,并显示您收到的错误。XStream XStream=new XStream(new DomDriver());FileReader fin=newfilereader(“path_to_file.xml”);BufferedReader br=新的BufferedReader(fin);而(br.ready()){str+=br.readLine()+“\n”;}House House=(House)xstream.fromXML(str);线程“main”com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException:House----调试信息----重复字段:常驻类:House path:/House/Resident[2]我应该指定:我请求的信息,您应该输入问题。让所有人都更容易阅读。另外,请显示House.java的源代码。如果您包含
House
的类定义,则会很有帮助。此外,您还可以修改原始问题以包含请求的更新。把它放在评论中会使你更难理解你的问题并帮助你。
@XStreamAlias("house")
public class House{

@XStreamAlias("Address")
private String address;

@XStreamImplicit
protected List<Resident> residents;

    ...