zoukankan      html  css  js  c++  java
  • dom4j解析xml

    XML文件

    <?xml version="1.0" encoding="UTF-8"?>

    <Request>

        <TransactionId>10242</TransactionId>

        <RBASRec>

           <Dept>高血压门诊</Dept>

           <DeptId>576</DeptId>

           <DoctorId>2513</DoctorId>

           <DoctorName>杨国勋</DoctorName>

           <DoctorTitle>副主任医师</DoctorTitle>

           <RBASDate>2012-01-05</RBASDate>

           <RBASId>1022||92</RBASId>

           <RBASPrice>.5</RBASPrice>

           <RBASSessionCode>上午</RBASSessionCode>

           <StartTime>08:00</StartTime>

           <EndTime>12:00</EndTime>

           <RBASSessionLoad>7</RBASSessionLoad>

           <RBASSessionType>副主任号</RBASSessionType>

           <RBASSessionTypeId>11</RBASSessionTypeId>

           <AdmitAddress>高血压门诊</AdmitAddress>

             <ASTimeRangeFlag>Y</ASTimeRangeFlag>         

            <ASTRRegInfoStr>08:30-09:30^5,09:30-10:30^5,10:30-11:30^5</ASTRRegInfoStr>

        </RBASRec>

    二、解析

    解析之前准备dom4j.jar/官网下载后放在项目lib目录下

    创建ParseXML类

    public class ParseXML {

       public static void main(String[] args) {

         try {

    String xml=’拼接xml字段’

             Document doc = DocumentHelper.parseText(xml);

             Element root = doc.getRootElement();

             //停医生

             Iterator itersElIterator = root.elementIterator("RBASRec");

             while (itersElIterator.hasNext()) {

                Element RBASRecNew = (Element) itersElIterator.next();

                String Dept = RBASRecNew.elementTextTrim("Dept");

                String DeptId = RBASRecNew.elementTextTrim("DeptId");

                String DoctorId = RBASRecNew.elementTextTrim("DoctorId");

                String DoctorName = RBASRecNew.elementTextTrim("DoctorName");

                String DoctorTitle = RBASRecNew.elementTextTrim("DoctorTitle");

                String RBASDate = RBASRecNew.elementTextTrim("RBASDate");

                String RBASId = RBASRecNew.elementTextTrim("RBASId");

                String RBASPrice = RBASRecNew.elementTextTrim("RBASPrice");

                String RBASSessionCode = RBASRecNew.elementTextTrim("RBASSessionCode");

                String StartTime = RBASRecNew.elementTextTrim("StartTime");

                String EndTime = RBASRecNew.elementTextTrim("EndTime");

                String RBASSessionLoad = RBASRecNew.elementTextTrim("RBASSessionLoad");

                String RBASSessionType = RBASRecNew.elementTextTrim("RBASSessionType");

                String RBASSessionTypeId = RBASRecNew.elementTextTrim("RBASSessionTypeId");

                String AdmitAddress = RBASRecNew.elementTextTrim("AdmitAddress");

                String ASTimeRangeFlag = RBASRecNew.elementTextTrim("ASTimeRangeFlag");

                String ASTRRegInfoStr = RBASRecNew.elementTextTrim("ASTRRegInfoStr");

                //把遍历的节点存放在Map中

                Map<String,String> stMap = new HashMap<String,String>();

                stMap.put("Id", UUID.randomUUID().toString());

                stMap.put("Dept", Dept);

                stMap.put("DeptId", DeptId);

                stMap.put("DoctorId", DoctorId);

                stMap.put("DoctorName", DoctorName);

                stMap.put("DoctorTitle", DoctorTitle);

                stMap.put("RBASDate", RBASDate);

                stMap.put("RBASId", RBASId);

                stMap.put("RBASPrice", RBASPrice);

                stMap.put("RBASSessionCode", RBASSessionCode);

                stMap.put("StartTime", StartTime);

                stMap.put("EndTime", EndTime);

                stMap.put("RBASSessionLoad", RBASSessionLoad);

                stMap.put("RBASSessionType", RBASSessionType);

                stMap.put("RBASSessionTypeId", RBASSessionTypeId);

                stMap.put("AdmitAddress", AdmitAddress);

                stMap.put("ASTimeRangeFlag", ASTimeRangeFlag);

                stMap.put("ASTRRegInfoStr", ASTRRegInfoStr);

         //每个map存放一个医生,再放入集合list里

                List<Map<String,String>> stList=new ArrayList<Map<String,String>>();

                stList.add(stMap);

                InsertXmlist.linegc(stList); 

             }

    } catch (DocumentException e) {

             e.printStackTrace();

          }

       }

    }

    三、创建InsertXmlist类遍历入库

    public static String linegc(List<Map<String,String>> xmllist) {

          Connection conndyzd = null;

          PreparedStatement psyzd = null;

          List<Map<String,String>> pays=xmllist;

          try {

             //阿里云durid

             conndyzd=DruidDatasource.getConnection();

             conndyzd.setAutoCommit(false);

             psyzd = conndyzd.prepareStatement(sql语句);

      for (Map<String,String> pay: pays) { 

                psyzd.setString(1, pay.get("Dept"));

                psyzd.setString(2, pay.get("DeptId"));

                psyzd.setString(3, pay.get("DoctorId"));

                psyzd.setString(4, pay.get("DoctorName"));

                psyzd.setString(5, pay.get("DoctorTitle"));

                psyzd.setString(6, pay.get("RBASDate"));

                psyzd.setString(7, pay.get("RBASId"));

                psyzd.setString(8, pay.get("RBASPrice"));

                psyzd.setString(9, pay.get("RBASSessionCode"));

                psyzd.setString(10, pay.get("StartTime"));

                psyzd.setString(11, pay.get("EndTime"));

                psyzd.setString(12, pay.get("RBASSessionLoad"));

                psyzd.setString(13, pay.get("RBASSessionType"));

                psyzd.setString(14, pay.get("RBASSessionTypeId"));

                psyzd.setString(15, pay.get("AdmitAddress"));

                psyzd.setString(16, pay.get("ASTimeRangeFlag"));

                psyzd.setString(17, pay.get("ASTRRegInfoStr"));

                psyzd.addBatch();//批量操作        

             }

             // 批量执行

             psyzd.executeBatch();

             conndyzd.commit();

          }catch (SQLException e) {

             e.printStackTrace();

             return expUtils(e);

          } finally {

             try {

                if (psyzd != null)

                    psyzd.close();

                if (conndyzd != null)

                    conndyzd.close();

             } catch (SQLException e) {

                e.printStackTrace();

                return expUtils(e);

             }

          }

          return "1";

       }

      

    public static String expUtils(Exception e) {

       String title = "Exception " + e.getMessage();

       StringBuffer msg = new StringBuffer();

       for (StackTraceElement ex : e.getStackTrace()) {

          msg.append("at: " + ex.toString() + " ");

       }

       return title + " " + msg;

      }

    }

    四、创建DataSoures连接库

    public class DataSoures {

       /*

        * 6步 1步 加载(注册)驱动 2步 获取数据库连接对象 Connection 3步 创建执行SQL语句对象 Statement 4步执行SQL语句过程 5步 返回数据结果集对象 ResultSet 6步 关闭资源

        */

       static Properties p = null;

       static {

          // 1步 加载(注册)驱动 

          p = new Properties();

          InputStream is = null;

          try {   

             String driverName = "com.mysql.jdbc.Driver";

             Class.forName(driverName);

          } catch (Exception e) {

     

             e.printStackTrace();

          }

       }

       // -------------------TODO-----------------获取连接

       public static Connection getCon() {

            String url = "jdbc:mysql://localhost:3306/srkl";

            String user = "root";

            String password = "root";

          Connection con = null;

          // 2步 获取数据库连接对象 Connection

          try {

             con = DriverManager.getConnection(url, user, password);

          } catch (SQLException e) {

             e.printStackTrace();

          }

          return con;

       }

       // -----TODO------------ 关闭资源公共方法

          public static void closeAll(Connection con, Statement st, ResultSet rst) {

             try {

                if (rst != null) {

                    rst.close();

                }

                if (st != null) {

                    st.close();

                }

                if (con != null) {

                    con.close();

                }

             } catch (Exception e) {

     

             }

          }

    }

    创建数据库srkl创建表,加入xml所有字段及加入id 和createtime(实时时间)字段。 

    运行main方法就可以在数据库和表中看到数据了。

  • 相关阅读:
    迭代器
    【转】javascript中this的四种用法
    【转】CSS(10)盒子模型
    【转】深入理解JVM—JVM内存模型
    【转】深入JVM系列(一)之内存模型与内存分配
    【转】[译]深入理解JVM
    【转】C#中virtual和abstract的区别
    【转】面向对象设计的SOLID原则
    【转】Building a RESTful Web Service
    【转】设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
  • 原文地址:https://www.cnblogs.com/wuqiaoqun/p/13091452.html
Copyright © 2011-2022 走看看