在类结构更改后,面临解组旧XML的问题



我正在努力解组一个结构与我当前对象结构不同的旧 xml 文件。

以前的结构

@xmlRootElement("configData")
public class configData{  
 private string name; 
 private string age; 
 private customObject obj;
}

我目前的数据结构是

@xmlRootElement("configData")
public class configData{  
  List<SampleData> sampleDatas;;
}
public class SampleData{
  private string name; 
  private string age; 
  private customObject obj;
 }

如何使其与旧的xml文件一起使用。请帮忙。

谢谢

您的旧结构表明,XML 文件中仅存在一组SampleData
所以你应该尝试这样的事情:

@XmlRootElement
public class ConfigData
{
  // This will hide the list from JAXB
  @XmlTransient
  private final List<SampleData> sampleDatas = new ArrayList<>();
  private SampleData getFirstSample()
  {
    if(sampleDatas.isEmpty())
      sampleDatas.add(new SampleData());
    return sampleDatas.get(0);
  }
  // Façade methods to delegate functionality to the list's first item...
  // Only setters are required, if you just want to read in an old format.
  // However this would not be optional, if you want to save to the new format...
  public void setName(String name)
  {
    getFirstSample().setName(name);
  }
  public void seAge(String age)
  {
    getFirstSample().setAge(age);
  }
  public void setObj(CustomObject obj)
  {
    getFirstSample().setObj(obj);
  }
}
public class SampleData
{
  private String name; 
  private String age; 
  private CustomObject obj;
  // Accessor methods...
}

ConfigData 中的外观设置器方法将其值存储到列表的第一项。

为了提供保存的可能性,您应该删除@XmlTransient,并为要保存的字段提供public getter...

最新更新