我正在努力解组一个结构与我当前对象结构不同的旧 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...