title: JAXB add/remove node from existing XML
body: <p>I have the following code to Create an XML and also read through it,
  What I want to achieve is, remove a particular node on basis of it's ID.</p>
  
  <p><strong>Class employee.java -</strong> </p>
  
  <pre><code>package com.howtodoinjava.jaxb.examples.list;
  
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlRootElement;
  
  @XmlRootElement(name = "employee")
  @XmlAccessorType (XmlAccessType.FIELD)
  public class Employee 
  {
      private Integer id;
      private String firstName;
      private String lastName;
      private double income;
  
      public Integer getId() {
          return id;
      }
      public void setId(Integer id) {
          this.id = id;
      }
      public String getFirstName() {
          return firstName;
      }
      public void setFirstName(String firstName) {
          this.firstName = firstName;
      }
      public String getLastName() {
          return lastName;
      }
      public void setLastName(String lastName) {
          this.lastName = lastName;
      }
      public double getIncome() {
          return income;
      }
      public void setIncome(double income) {
          this.income = income;
      }
  }
  </code></pre>
  
  <p><strong>Class Employees.java -</strong> </p>
  
  <pre><code>package com.howtodoinjava.jaxb.examples.list;
  
  import java.util.List;
  
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlElement;
  import javax.xml.bind.annotation.XmlRootElement;
  
  @XmlRootElement(name = "employees")
  @XmlAccessorType (XmlAccessType.FIELD)
  public class Employees 
  {
      @XmlElement(name="employee")
      private List&lt;Employee&gt; employees = null;
  
      private Integer size;
  
      public List&lt;Employee&gt; getEmployees() {
          return employees;
      }
      public void setEmployees(List&lt;Employee&gt; employees) {
          this.employees = employees;
      }
      public Integer getSize() {
          return size;
      }
      public void setSize(Integer size) {
          this.size = size;
      }
  }
  </code></pre>
  
  <p><strong>Class TestEmployeeMarshing.java -</strong></p>
  
  <pre><code>package com.howtodoinjava.jaxb.examples.list;
  
  import java.io.File;
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Iterator;
  import java.util.List;
  
  import javax.xml.bind.JAXBContext;
  import javax.xml.bind.JAXBException;
  import javax.xml.bind.Marshaller;
  import javax.xml.bind.Unmarshaller;
  
  public class TestEmployeeMarshing 
  {
      static Employees employees = new Employees();
      static 
      {
          employees.setEmployees(new ArrayList&lt;Employee&gt;());
  
          Employee emp1 = new Employee();
          emp1.setId(1);
          emp1.setFirstName("John");
          emp1.setLastName("Doe");
          emp1.setIncome(10000.0);
  
          Employee emp2 = new Employee();
          emp2.setId(2);
          emp2.setFirstName("Jane");
          emp2.setLastName("Doe");
          emp2.setIncome(20000.0);
  
          Employee emp3 = new Employee();
          emp3.setId(3);
          emp3.setFirstName("Bacon");
          emp3.setLastName("Butter");
          emp3.setIncome(30000.0);
  
          Employee emp4 = new Employee();
          emp4.setId(4);
          emp4.setFirstName("Pepparoni");
          emp4.setLastName("Pizza");
          emp4.setIncome(40000.0);
  
          employees.getEmployees().add(emp1);
          employees.getEmployees().add(emp2);
          employees.getEmployees().add(emp3);
          employees.getEmployees().add(emp4);
      }
  
      public static void main(String[] args) throws JAXBException 
      {
          marshalingExample();
          System.out.println("************************************************");
          unMarshalingExample();
      }
  
      private static void unMarshalingExample() throws JAXBException {
  
          JAXBContext jaxbContext = JAXBContext.newInstance(Employees.class);
          Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
          employees = new Employees();
          employees = (Employees) jaxbUnmarshaller.unmarshal( new File("G:/xml/employees.xml") );
          List&lt;Employee&gt; tempEmp=   employees.getEmployees();
  
  
          for (int i = 0; i &lt; tempEmp.size(); i++) {
  
              if(tempEmp.get(i).getId().equals(3)){
                  System.out.println("ID equals 3");
                  tempEmp.remove(i);
              }
          }
  
          marshalingExample();
  
      }
  
      private static void marshalingExample() throws JAXBException
      {
          JAXBContext jaxbContext = JAXBContext.newInstance(Employees.class);
          Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
  
          jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  
          jaxbMarshaller.marshal(employees, System.out);
          jaxbMarshaller.marshal(employees, new File("G:/xml/employees.xml"));
      }
  }
  </code></pre>
  
  <p><strong>I need to remove the Node with ID 1 and add a new Node.</strong></p>