I used JAXB in generate my class but I have problem when insert element in my XML file, so I insert first time element in my file XML, but when insert second time all file is clear and re-write XML. I have classes (project,layer) and I am write method for insert Project and layer to XML file. Please help me how I can insert project in XML then insert layer in XML with out clear xml file each time write XML.
This my class project :
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Project")
public class Project {
@XmlElement(name = "Layer")
protected List<Layer> layer;
@XmlAttribute(name = "name")
protected String name;
public List<Layer> getLayer() {
if (layer == null) {
layer = new ArrayList<Layer>();
}
return this.layer;
}
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
}
this my class Layer:
@XmlAccessorType(XmlAccessType.FIELD)
public class Layer {
@XmlElement(name = "LayerName", required = true)
protected String layerName;
@XmlAttribute(name = "idLayer")
protected int idLayer;
public String getLayerName() {
return layerName;
}
public void setLayerName(String value) {
this.layerName = value;
}
public int getIdLayer() {
return idLayer;
}
public void setIdLayer(int i) {
this.idLayer = i;
}
}
Method insert project:
public boolean Insert(Project entity) {
Project pr = new Project();
pr.setName(entity.getName());
try {
JAXBContext jc = JAXBContext.newInstance(Project.class);
javax.xml.bind.Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
File XMLfile = new File("Projects//asdad//ProjectDataBase.xml");
marshaller.marshal(pr, XMLfile);
} catch (JAXBException e) {
e.printStackTrace();
}
return false;
}
Method insert Layer:
public boolean Insert(Layer entity) {
Project pr = new Project();
pr.setName(pr.getName());
Layer addLayer = new Layer();
addLayer.setIdLayer(entity.getIdLayer());
addLayer.setLayerName(entity.getLayerName());
pr.getLayer().add(addLayer);
try {
JAXBContext jc = JAXBContext.newInstance(Project.class);
javax.xml.bind.Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
File XMLfile = new File("Projects//asdad//ProjectDataBase.xml");
marshaller.marshal(pr, XMLfile);
} catch (JAXBException e) {
e.printStackTrace();
}
return false;
}