请问下JAVA怎么解析XML文件获得值后直接添加入Orcale数据库中

解决方案 »

  1.   

    <?xml version="1.0" encoding="UTF-8"?>
    <personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation='personal.xsd'>  <person id="Big.Boss" >
        <name><family>Boss</family> <given>Big</given></name>
        <email>[email protected]</email>
        <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
      </person>  <person id="one.worker">
        <name><family>Worker</family> <given>One</given></name>
        <email>[email protected]</email>
        <link manager="Big.Boss"/>
      </person>  <person id="two.worker">
        <name><family>Worker</family> <given>Two</given></name>
        <email>[email protected]</email>
        <link manager="Big.Boss"/>
      </person>  <person id="three.worker">
        <name><family>Worker</family> <given>Three</given></name>
        <email>[email protected]</email>
        <link manager="Big.Boss"/>
      </person>  <person id="four.worker">
        <name><family>Worker</family> <given>Four</given></name>
        <email>[email protected]</email>
        <link manager="Big.Boss"/>
      </person>  <person id="five.worker">
        <name><family>Worker</family> <given>Five</given></name>
        <email>[email protected]</email>
        <link manager="Big.Boss"/>
      </person>
    </personnel>
    像这种xml文件的值
    我要解析出来怎么做啊
      

  2.   

    用dom4j解析,然后sql插入数据库
      

  3.   

    http://www.ibm.com/developerworks/cn/xml/x-dom4j.html
    然后将解析出来的结果拼接成sql,插入到数据库中
      

  4.   

    用Jaxb2,直接转成java对象。然后循环插库
      

  5.   

    dom4j  我资源里有这样的例子
      

  6.   

    恩,jdk1.6之前是吗?
    jaxb2是jdk1.6原生支持。性能上,就算单句执行效率不及你。但是你毕竟是document......出来的语句。我是直接生成javabean。你用dom4j执行的语句要远远大于jaxb2执行的语句。跟你调用document再自己拼的方法完全不同。只需要加入注释,开发效率高。
      

  7.   

    可以参考下 public void personWrite(List<PersonBean> list,String filename,String update)
        {

    Date date=DateHandler.strToDate(update);
    int year=DateHandler.getYear(date);
    int month=DateHandler.getMonth(date);
    logger.info("build person xml file month:"+month);
         try
         {
         DTXXDocument doc=DTXXDocument.Factory.newInstance();
         File xmlFile = new File(filename);
         CatalogTypeDTXX ctd=doc.addNewDTXX();
         SchemaTypeDTXXFYPT stdf=ctd.addNewFYPT();
         TableTypeDTXXFYPTPSPERSON ttdperson=stdf.addNewPSPERSON();
           
         for(PersonBean person:list)
    {
         RowTypeDTXXFYPTPSPERSON psperson=ttdperson.addNewRow();
            
         psperson.setPPERSONID(person.getP_personid());
         psperson.setHGRADUATEC(person.getHgraduatec());
         psperson.setOLDHGRADUC(person.getOldhgraduc());
         psperson.setPABILITY(person.getP_ability());
         psperson.setPACCOUNT(person.getP_account());
         psperson.setPAREADAY(person.getP_areaday()==null ? null:DateHandler.getCalendar(person.getP_areaday()));
        
         psperson.setPBIRTHDAY(DateHandler.getCalendar(person.getP_birthday()));
         psperson.setPCITY(person.getP_city());
         psperson.setPCODE(person.getP_code());
         psperson.setPCONDAY(DateHandler.getCalendar(person.getP_conday()));
         if(person.getP_conlenth()!=null)
         {
         psperson.setPCONLENTH(person.getP_conlenth());
         }
         psperson.setPDEGRJN(person.getP_degrjn());
        
         psperson.setPDEGRJNDAY(person.getP_degrjnday()==null ? null:DateHandler.getCalendar(person.getP_degrjnday()));
         psperson.setPFACE(person.getP_face());
         psperson.setPGRJL(person.getP_grjl());
         psperson.setPHDEGREE(person.getP_hdegree());
         psperson.setPHID(person.getP_hid());
         psperson.setPHSCHEDAY(person.getP_hscheday()==null ? null:DateHandler.getCalendar(person.getP_hscheday()));
        
         if(person.getP_hschlen()!=null)
         {
         psperson.setPHSCHLEN(person.getP_hschlen());
         }
         psperson.setPHSCHNAME(person.getP_hschname());
         psperson.setPHSPECIAL(person.getP_hspecial());
         psperson.setPID(person.getP_id());
         psperson.setPIDEN(person.getP_iden());
         psperson.setPIOKTYPE(person.getP_ioktype());
         psperson.setPIOUAREA(person.getP_iouarea());
         psperson.setPIOULINE(person.getP_iouline());
         psperson.setPIOUNAME(person.getP_iouname());
         psperson.setPIOUTO(person.getP_iouto());
         psperson.setPIOUTYPE(person.getP_ioutype());
         psperson.setPISABLE(person.getP_isable());
         psperson.setPISGB(person.getP_isgb());
         psperson.setPISNHG(person.getP_isnhg());
         psperson.setPISNT(person.getP_isnt());
         psperson.setPISNZG(person.getP_isnzg());
         psperson.setPISOUT(person.getP_isout());
         psperson.setPISRUN(person.getP_isrun());
         psperson.setPISSZ(person.getP_issz());
         psperson.setPISTRANS(person.getP_istrans());
         psperson.setPISXG(person.getP_isxg());
         psperson.setPISXGJY(person.getP_isxgjy());
         psperson.setPISXGZM(person.getP_isxgzm());
         psperson.setPISYW(person.getP_isyw());
         psperson.setPITYPE(person.getP_itype());
         psperson.setPIUDAY(person.getP_iuday()==null ? null:DateHandler.getCalendar(person.getP_iuday()));
         psperson.setPKINDTYPE(person.getP_kindtype());
         psperson.setPLJGL(person.getP_ljgl());
         psperson.setPMAINSPE(person.getP_mainspe());
         psperson.setPNAME(person.getP_name());
         psperson.setPNATION(person.getP_nation());
         psperson.setPNTDATE(person.getP_ntdate()==null ? null:DateHandler.getCalendar(person.getP_ntdate()));
         psperson.setPNUMBER(person.getP_number());
         psperson.setPOAC(person.getP_oac());
         psperson.setPODAY(person.getP_oday()==null ? null:DateHandler.getCalendar(person.getP_oday()));
         psperson.setPOLDID1(person.getP_oldid1());
         psperson.setPOLDID2(person.getP_oldid2());
         psperson.setPOPEND(person.getP_opend()==null ? null:DateHandler.getCalendar(person.getP_opend()));
         psperson.setPOPSTART(person.getP_opstart()==null ? null:DateHandler.getCalendar(person.getP_opstart()));
         psperson.setPOTYPEID(person.getP_otypeid());
         psperson.setPPASSWORD(person.getP_password());
         psperson.setPPAYBDAY(person.getP_paybday()==null ? null:DateHandler.getCalendar(person.getP_paybday()));
         psperson.setPPAYEDAY(person.getP_payeday()==null ? null:DateHandler.getCalendar(person.getP_payeday()));
         psperson.setPPICTURE(person.getP_picture());
         psperson.setPRANK(person.getP_rank()==null ? 0 : person.getP_rank()) ;
         psperson.setPRANK0(person.getP_rank0()==null ? 0 : person.getP_rank0());
         psperson.setPSEX(person.getP_sex());
         psperson.setPSPEDAY(person.getP_speday()==null ? null:DateHandler.getCalendar(person.getP_speday()));
         psperson.setPSPEEND(person.getP_speend()==null ? null:DateHandler.getCalendar(person.getP_speend()));
         psperson.setPSPEPER(person.getP_speper());
         psperson.setPSPEPERDAY(person.getP_speperday()==null ? null:DateHandler.getCalendar(person.getP_speperday()));
         psperson.setPSPESTART(person.getP_spestart()==null ? null:DateHandler.getCalendar(person.getP_spestart()));
         psperson.setPSPETITLE(person.getP_spetitle());
         psperson.setPSTITLE(person.getP_stitle());
         psperson.setPSTITLEDAY(person.getP_stitleday()==null ? null:DateHandler.getCalendar(person.getP_stitleday()));
         psperson.setPTITLE(person.getP_title());
         psperson.setPTITLEDAY(person.getP_titleday()==null ? null:DateHandler.getCalendar(person.getP_titleday()));
         psperson.setPTITLEJB(person.getP_titlejb());
         if(person.getP_totalsus()!=null)
         {
         psperson.setPTOTALSUS(person.getP_totalsus());
         }
         psperson.setPUPDATE(person.getP_update()==null ? null:DateHandler.getCalendar(person.getP_update()));
         psperson.setPWORKDAY(person.getP_workday()==null ? null:DateHandler.getCalendar(person.getP_workday()));
        
         psperson.setPWORKNAME(person.getP_workname());
         psperson.setPWORKSTATUS(person.getP_workstatus());
         psperson.setPXGDATE(person.getP_xgdate()==null ? null:DateHandler.getCalendar(person.getP_xgdate()));
         psperson.setPXGJYDATE(person.getP_xgjydate()==null ? null:DateHandler.getCalendar(person.getP_xgjydate()));
         psperson.setPXGZMDATE(person.getP_xgzmdate()==null ? null:DateHandler.getCalendar(person.getP_xgzmdate()));
         psperson.setPXM(person.getP_xm());
         if(person.getRole_id()!=null)
         {
         psperson.setROLEID(person.getRole_id());
         }
        
         psperson.setDPTID(person.getDpt_id());
         psperson.setUPLOADYEAR(year);
         psperson.setUPLOADMOU(month);
             //新增
         psperson.setPISALONE(person.getP_isalone());
         psperson.setPISMARRY(person.getP_ismarry());
         psperson.setPOLDSCHOOL(person.getP_oldschool());
         psperson.setPOLDSPECIALTY(person.getP_oldspecialty());
         psperson.setPOLDSCHEDAY(person.getP_oldscheday()==null ? null:DateHandler.getCalendar(person.getP_oldscheday()));
    if(person.getP_opzd()!=null)
    {
         psperson.setPOPZD(person.getP_opzd());
    }
    if(person.getP_spejb()!=null)
    {
    psperson.setPSPEJB(person.getP_spejb());
    }
    psperson.setPINPARTYDAY(person.getP_inpartyday()==null? null:DateHandler.getCalendar(person.getP_inpartyday()));
    if(person.getP_spezd()!=null)
    {
    psperson.setPSPEZD(person.getP_spezd());
    }
    psperson.setISHURT(person.getIshurt());
    psperson.setHURTGRID(person.getHurtgrid());
    psperson.setHURTPART(person.getHurtpart());
    psperson.setHURTDAY(person.getHurtday()==null? null:DateHandler.getCalendar(person.getHurtday()));
    psperson.setPMEMO(person.getP_memo());
    psperson.setPISLOAN(person.getP_isLoan());
    psperson.setPINPARTYTIME(person.getP_inpartytime()==null ? null :DateHandler.getCalendar(person.getP_inpartytime()));
    psperson.setPORDER(person.getP_order());
    }
        
        
         doc.save(xmlFile);
         logger.info("person xml build");
         }
         catch(Exception e)
         {
         e.printStackTrace();
         logger.error(e.getMessage());
         }
        }
      

  8.   

    package org.test;import javax.xml.bind.annotation.XmlAttribute;public class Address {
    private String addressName; @XmlAttribute
    public String getAddressName() {
    return addressName;
    } public void setAddressName(String addressName) {
    this.addressName = addressName;
    }
    }package org.test;import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.Unmarshaller;
    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlAttribute;@XmlRootElement
    public class Student {
    private int studentId;
    private String name;
    private Address address; @XmlElement
    public Address getAddress() {
    return address;
    } public void setAddress(Address address) {
    this.address = address;
    } @XmlAttribute
    public int getStudentId() {
    return studentId;
    } public void setStudentId(int studentId) {
    this.studentId = studentId;
    } @XmlElement
    public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public static void main(String args[]) throws JAXBException, IOException {
    JAXBContext context = JAXBContext.newInstance(Student.class);
    Marshaller marshaller = context.createMarshaller();
    Address address = new Address();
    address.setAddressName("Home");
    Student student = new Student();
    student.setStudentId(12345);
    student.setName("Rainsilence");
    student.setAddress(address);
    PrintWriter writer = new PrintWriter(System.out);
    marshaller.marshal(student, writer);
    // writer.close();
    ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
    marshaller.marshal(student, byteOutStream);
    ByteArrayInputStream byteInStream = new ByteArrayInputStream(
    byteOutStream.toByteArray());
    Unmarshaller unmarshaller = context.createUnmarshaller();
    Student another = (Student) unmarshaller.unmarshal(byteInStream);
    byteInStream.close();
    byteOutStream.close();
    System.out.println(another.getName());
    }
    }给你个例子,轻松从xml转到javabean,及从javabean,转成xml
      

  9.   


    你写了那么多set啊,我这里set都不用啊
      

  10.   


    因为 JAXB 把 set 的工作给做掉了。
      

  11.   

    其实我觉得还是JDOM好做一些了,那个也比较简单。而且他是用纯java对xml来解析的