java 读取xml

1.DB.java

package com.bn.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Iterator; import java.util.Properties; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class DB { private static String dbServer; private static String dbName; private static String dbUser; private static String dbPwd;  public void readXML(){          SAXReader sr = new SAXReader();//获取读取xml的对象。    Document doc = null;     String path1 = String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""));     //System.out.println(path1);     path1 = path1 + "../DB.xml";     //System.out.println(path1);   try {    doc = sr.read(path1);   } catch (DocumentException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }//得到xml所在位置。然后开始读取。并将数据放入doc中    Element el_root = doc.getRootElement();//向外取数据,获取xml的根节点。    Iterator it = el_root.elementIterator();//从根节点下依次遍历,获取根节点下所有子节点         while(it.hasNext()){//遍历该子节点           Object o = it.next();//再获取该子节点下的子节点     Element el_row = (Element)o;      String s = el_row.getText();      Iterator it_row = el_row.elementIterator();      int i =1;      while(it_row.hasNext()){//遍历节点      Element el_ename = (Element)it_row.next();//获取该节点下的所有数据。          if(i == 1){        this.setDbServer(el_ename.getText());        //System.out.println(this.getDbServer());        //dbServer = el_ename.getText();       }       if(i == 2){        this.setDbName(el_ename.getText());         // System.out.println(this.getDbName());        //dbName = el_ename.getText();       }       if(i == 3){        this.setDbUser(el_ename.getText());         // System.out.println(this.getDbUser());        //dbUser = el_ename.getText();       }       if(i == 4){        this.setDbPwd(el_ename.getText());         // System.out.println(this.getDbPwd());        //dbPwd = el_ename.getText();       }      // System.out.println(i);       i++;       //System.out.println(el_ename.getText());      }      //System.out.println(o);     }         } static {   DB dbxml = new DB();   dbxml.readXML();      try {    Class.forName("com.mysql.jdbc.Driver");   } catch (ClassNotFoundException e) {    e.printStackTrace();   } } public static Connection createConn(){   DB dbxml = new DB();   //String name = dbxml.dbName;   //System.out.println(name);   //System.out.println(dbxml.getDbServer() + dbxml.getDbName() + dbxml.getDbUser() + dbxml.getDbPwd());   Connection conn = null;   try {    conn = DriverManager.getConnection("jdbc:mysql://"+ dbxml.getDbServer() +":3306/"+ dbxml.getDbName() +"?user="+ dbxml.getDbUser() +"&password="+ dbxml.getDbPwd());    //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bnss?user=root&password=root");   } catch (SQLException e) {    e.printStackTrace();   }   return conn; } public static PreparedStatement createPstmt(Connection conn, String sql){   PreparedStatement pstmt = null;   try {    pstmt = conn.prepareStatement(sql);   } catch (SQLException e) {    e.printStackTrace();   }   return pstmt; } public static void close(Connection conn){   if(conn == null)return;   try {    conn.close();    conn = null;   } catch (SQLException e) {    e.printStackTrace();   } } public static void close(Statement stmt){   try {    stmt.close();    stmt = null;   } catch (SQLException e) {    e.printStackTrace();   } } public static void close(ResultSet rs){   try {    rs.close();    rs = null;   } catch (SQLException e) {    e.printStackTrace();   } } public String getDbName() {   return dbName; } public void setDbName(String dbName) {   this.dbName = dbName; } public String getDbServer() {   return dbServer; } public String getDbUser() {   return dbUser; } public String getDbPwd() {   return dbPwd; } public void setDbServer(String dbServer) {   this.dbServer = dbServer; } public void setDbUser(String dbUser) {   this.dbUser = dbUser; } public void setDbPwd(String dbPwd) {   this.dbPwd = dbPwd; } }

2.ParseXML.java

package com.bn.util; import java.util.Properties; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; import java.net.URL;  //java项目www.fhadmin.org public class ParseXML{     //定义一个Properties 用来存放 dbhost dbuser dbpassword的值    private Properties props;     //这里的props     public Properties getProps() {         return this.props;     }     public void parse(String filename) {         //将我们的解析器对象化        ConfigParser handler = new ConfigParser();         //获取SAX工厂对象        SAXParserFactory factory = SAXParserFactory.newInstance();         factory.setNamespaceAware(false);         factory.setValidating(false);         //获取SAX解析        SAXParser parser=null;         try {             parser = factory.newSAXParser();         } catch (Exception e1) {                         e1.printStackTrace();         }                 URL confURL = null;         //得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes         //下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义        try{             confURL = ParseXML.class.getClassLoader().getResource(filename); //只需要将我们所需要的XML文件名字输入进去就可以了!        }catch(Exception e){             System.out.print(e.toString());         }         try         {    //将解析器和解析对象myenv.xml联系起来,开始解析            parser.parse(confURL.toString(), handler);             //获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了            props = handler.getProps();         }catch(Exception e){             System.out.println(e.toString());         }finally{             factory=null;             parser=null;             handler=null;         }     } }

3.ConfigParser.java

package com.bn.util; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.SAXException; import java.util.Properties;//使用DefaultHandler的好处 是 不必陈列出所有方法,//java项目www.fhadmin.orgpublic class ConfigParser extends DefaultHandler {     ////定义一个Properties 用来存放 dbhost dbuser dbpassword的值    private Properties props;     private String currentSet;     private String currentName;     private StringBuffer currentValue = new StringBuffer();     //构建器初始化props     public ConfigParser() {         this.props = new Properties();     }     public Properties getProps() {         return this.props;     }     //定义开始解析元素的方法. 这里是将<xxx>中的名称xxx提取出来.     public void startElement(String uri, String localName, String qName, Attributes attributes)throws SAXException {         currentValue.delete(0, currentValue.length());         this.currentName =qName;     }     //这里是将<xxx></xxx>之间的值加入到currentValue     public void characters(char[] ch, int start, int length) throws SAXException {         currentValue.append(ch, start, length);     }     //在遇到</xxx>结束后,将之前的名称和值一一对应保存在props中    public void endElement(String uri, String localName, String qName) throws SAXException {         props.put(qName.toLowerCase(), currentValue.toString().trim());     } }
(0)

相关推荐

  • 【大学课程设计】基于java的企业进销存管理系统设计与实现

    @ 01 概述 02 系统结构及说明 03 工程结构 04 详细设计 05 使用说明 06 源码下载 关注公众号[C you again],回复"基于java的企业进销存管理系统" ...

  • java中 equals 使用时的注意事项

    假设在比较 str 和 "hehe"两个字符串是否相等我们可以采用以下两种方式: (1) String str = null; if ("hehe".equal ...

  • Java 读取Word文本框中的文本/图片/表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  • java读取硬件串口——数据断行问题

    如题,因为项目上的需要,让我使用Java读取硬件外设的串口数据并进行处理.之前也有C语言的基础,使用过串口读写程序,觉得挺简单的,,没放在心上.毕竟串口这也算是各种语言里面最基础的应用了吧,大的使用步 ...

  • Java 读取汉字拼音

    pom.xml导入pinyin4j的依赖 <dependency>             <groupId>com.belerweb</groupId>      ...

  • 【从零学习OpenCV】保存和读取XML和YMAL文件

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • VB6.0读取XML示例 - 木子屋 和另外 4 个页面 - 用户配置 1

    VB6.0读取XML示例编辑:dnawo 日期:2009-09-28字体大小: 小 中 大 复制内容到剪贴板程序代码Option ExplicitPrivate Sub Form_Load()'需引用 ...

  • java中XML元素和节点的区别

    一.概念 1.元素是一个小范围的定义,必须是含有完整信息的结点才是一个元素. 一个元素一定是一个结点,但是一个结点不一定是一个元素. 2.什么是node? NODE是相对TREE这种数据结构而言的.T ...

  • Java学习——122.将表中数据读取到图形界面中

    本篇介绍如何将数据库表中的数据读入到文本区中. 数据库仍是接前几篇,表设计为: 表中数据为: 将其读入到文本区中,其完整代码如下: 其数据库的类SQLclass 仍是之前写过的那个类,没有丝毫修改. ...

  • Java语言程序设计(十五)通过Java语言读取文本文件.txt

    Java语言读取文本txt 文本文件读取的大致过程如下: (1)构建文件对象, (2)使用文件对象构造Reader对象可以是FileReader.InputStreamReader等使用Reader对 ...

  • Java面试题总结之OOA/D,UML,和XML

    全文字数:   2732 阅读时间:   大约9 分钟 1.UML 是什么?常用的几种UML图? 统一建模语言(Unified Modeling Language,UML)又称标准建模语言:常用图包括 ...