[英]JAXB: Updating XML file after using ArrayList .add() method
我有一个简单的Java应用程序,它将要求用户插入“客户详细信息”,然后将这些详细信息保存到ArrayList中。 我想使用JAXB XML解析器将此ArrayList存储到XML文件中。 在代码的特定位置,我从用户处获取输入,并使用ArrayList .add()方法保存该输入。
在完成了一些教程并实现了JAXB代码之后,事实证明只保存了一条记录,并且在插入新数据后将其覆盖。
到目前为止,我的应用程序中有3个课程:
CustomerRecord.java-这是我要插入XML批注的类
import java.util.Scanner;
import javax.xml.bind.annotation.*;
@XmlRootElement
@XmlType(propOrder = { "name", "surname"})
public class CustomerRecord {
private String name;
private String surname;
private String cellular;
public String getName(){
return name;
}
public String getSurname(){
return surname;
}
@XmlAttribute
public String getCellular(){
return cellular;
}
public void setName(String name){
this.name = name;
}
public void setSurname(String surname){
this.surname = surname;
}
public void setCellular(String cellular){
this.cellular = cellular;
}
App.java-这是我保存xml文件的类。
public void addCustomer(){
CustomerRecord r = new CustomerRecord();
r.insertCustomerDetails();
crecords.add(r);
try{
JAXBContext jaxbContext = JAXBContext.newInstance(CustomerRecord.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
File XMLfile = new File("e:\\storage.xml");
jaxbMarshaller.marshal(r, XMLfile);
} catch (JAXBException e){
//TODO Catch block
e.printStackTrace();
}
}
现在我得到的结果是:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<customerRecord cellular="356 99606060">
<name>John</name>
<surname>Doe</surname>
</customerRecord>
如果插入了新数据,则上面的xml文件将被覆盖,而不是在其下有新记录,而我最终总是将xml列表中的一个元素保存在xml文件中。
我真正想要的是在彼此之间有多个记录,但是我没有实现这一目标!
请帮忙!
希望您现在已经解决了这个问题。
jaxbMarshaller.marshal( r ,XMLfile); --- r始终是一个元素。
jaxbMarshaller.marshal( crecords ,XMLfile); -crecords是您想要的arraylist。
这个答案吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.