我使用JAXB将我的对象写入Java中的XML文件。它写得很成功。我检查XML文件,所有值都是true。但是当我想读取这个XML文件时,一些元素值会发生变化。你有什么想法吗?
My Table类有2个实例,其类型是行列表(行类)和类型(来自类型类)。
Table t = tester.readXML("tables/course.xml");
List<Row> rows = new LinkedList<Row>();
rows.addAll(t.getRows());
for(Row r : rows)
System.out.println(r.getName() + " " + r.getType().getIsPrimary());
}
以下是XML Reader方法:
public Table readObject(String filepath) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(Table.class);
Unmarshaller u = jc.createUnmarshaller();
Table hw = (Table) u.unmarshal(new File(filepath));
return hw;
}
public Table readXML(String file) {
try {
File f = new File(file);
if(f.exists()) {
Table t = new Table();
t = readObject(file);
return t;
}
} catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:0)
<强> @XmlElements 强>
@XmlElements批注用于表示XML架构选择结构。所以而不是:
@XmlElements(value = { @XmlElement(name ="row") })
private List<Row> rows = new LinkedList<Row>();
你只需要:
@XmlElement(name ="row")
private List<Row> rows = new LinkedList<Row>();
<强> @XmlElementWrapper 强>
如果你想在你的“行”元素周围有一个分组元素(“行”),你可以使用@XmlElementWrapper注释:
@XmlElementWrapper
@XmlElement(name ="row")
private List<Row> rows = new LinkedList<Row>();
这将为您提供XML:
<rows>
<row>...</row>
<row>...</row>
</rows>