面临的问题解组旧的XML,类结构改变后
我很努力解组一个旧的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文件的工作。请帮忙。
感谢
你的旧结构表明,只有一组的SampleData
的XML文件中存在。
所以,你应该尝试是这样的:在ConfigData店thier到列表的第一项值
@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...
}
外墙setter方法。
提供了可能保存,你应该删除@XmlTransient
,并提供public
干将你要保存的田...
感谢您花时间解决我的问题。你是对的。旧的XML文件有一组样本数据。但是,除非我复制'configData'类中的属性,否则我将如何获取第一个'sampleData'对象中的属性值?我需要以新格式保存数据。 –
我没有在我的第一个'SampleData'对象中获取属性值。旧的XML文件始终为空。 –
谢谢!它正在工作。我将'@ xmlElement'注释应用于'configData'类中的所有setter –
你可以委托存取方法'configData',并标记列表'@ XmlTransient' ... –
我是JAXB映射的新手。 ** @ xmlTransient **在这种情况下如何提供帮助?请您详细说明一下 –