Добавление XML-файла в базу данных с использованием arraylist в Java - PullRequest
0 голосов
/ 25 июля 2011

Я могу прочитать XML-файл, используя следующий код. Мне нужно знать, как добавить xml в базу данных устройства с помощью массива.

Код XML:

    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();
    }


  }

Может кто-нибудь помочь мне, как добавить этот объект XML в базу данных в Java. Заранее спасибо.

1 Ответ

1 голос
/ 25 июля 2011

Если вы хотите сохранить необработанный XML в вашей базе данных, вы можете использовать атрибут byte[] в своем классе Device. Затем преобразуйте XML-документ в байтовый массив и сохраните его соответствующим образом. Если вам нужно обрабатывать файлы большего размера, вам следует обратить внимание и на потоковую передачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...