Click here to Skip to main content
15,884,739 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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 :

Java
@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:

Java
@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:

Java
 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:

Java
 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;
}
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900