0

I am able to read a XML file using the following code.I need to Know how to add the xml to the device database using the arraylist.

Xml code:

    public static void main(String argv[]) {

  try {

File fXmlFile = new File("c:\\testing.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();


NodeList nList = doc.getElementsByTagName("device");

for (int temp = 0; temp < nList.getLength(); temp++) {

   Node nNode = nList.item(temp);       
   if (nNode.getNodeType() == Node.ELEMENT_NODE) {

     Element eElement = (Element) nNode;
     ArrayList<Device> arrayList = new ArrayList<Device>();

     //System.out.println(arrayList);
     String type=getTagValue("type", eElement);
     String Name=getTagValue("name", eElement);
     String Setup=getTagValue("setup", eElement);
     arrayList.add(type);
     arrayList.add(Name);
     arrayList.add(Setup);
     System.out.println(arrayList);



    }
    }
  } catch (Exception e) {
     e.printStackTrace();
 }
}

  private static String getTagValue(String sTag, Element eElement){
   NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
   Node nValue = (Node) nlList.item(0); 

   return nValue.getNodeValue();    
}

  }

Device.java

  import java.util.HashSet;
  import java.util.Set;

  import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
 import javax.persistence.JoinTable;
 import javax.persistence.OneToMany;
  import javax.persistence.Table;
@Entity
@Table(name = "DEVICE")
 public class Device  {
    private String type;
    private String setup;
    private String name;
    private Long deviceId;
    private Set<CommandInfo> commandSet = new HashSet<CommandInfo>(); 

    public Device() {

    }

    public Device(String name, String type, String setup) {
            System.out.println("name = "+name+" type = "+type+" setup = "+setup);
            this.name = name;
            this.type = type;
            this.setup = setup;
    }

    /**
     * @return the type
     */
    public String getType() {
        return type;
    }

    /**
     * @param type the type to set
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * @return the setup
     */
    public String getSetup() {
        return setup;
    }

    /**
     * @param setup the setup to set
     */
    public void setSetup(String setup) {
        this.setup = setup;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the id
     */
    @Id
    @GeneratedValue
    @Column(name = "DEVICE_ID")
    public Long getDeviceId() {
        return deviceId;
    }

    /**
     * @param id the id to set
     */
    public void setDeviceId(Long id) {
        this.deviceId = id;
    }

    /**
     * @return the commandSet
     */
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "DEVICE_COMMAND", joinColumns = { 
            @JoinColumn(name = "DEVICE_ID") }, 
            inverseJoinColumns = { @JoinColumn(name = "COMMAND_ID") 
    })
    public Set<CommandInfo> getCommandSet() {
        return commandSet;
    }

    /**
     * @param commandSet the commandSet to set
     */
    public void setCommandSet(Set<CommandInfo> commandSet) {
        this.commandSet = commandSet;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Device [type=");
        builder.append(type);
        builder.append(", setup=");
        builder.append(setup);
        builder.append(", name=");
        builder.append(name);
        builder.append(", deviceId=");
        builder.append(deviceId);
        builder.append(", commandSet=");
        builder.append(commandSet);
        builder.append("]");
        return builder.toString();
    }


  }

Can anyone help me how to add this xml object to the database in java .Thanks in advance.

1
  • BTW: You should change your question and describe what you really need. Commented Jul 25, 2011 at 7:55

1 Answer 1

1

If you want to store the raw XML in your database, you can use a byte[] attribute in your Device class. Then, convert the XML document to a byte array and store it accordingly. If you have to handle larger files you should look at streaming as well.

Sign up to request clarification or add additional context in comments.

3 Comments

Or do you want to persist only the already extracted attributes? If so, you must obtain an EntityManager, create an instance of Device and persist it.
No i don't want to add raw files to the device class.I want the content of each node to the device class.
Yeah, so you must obtain an EntityManager, tons of tutorials exist: download.oracle.com/docs/cd/B31017_01/web.1013/b28221/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.