<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    利用SAX和DOM對(duì)XML解析

    Xml解析

    Xml文件:

    1.聲明:<?xml version=”1.0” standalone=”yes/no” encoding=”UTF-8/GB2312” ?>


    2.
    是否有DTD(文檔類型定義)<!DOCTYPE typeofdoc SYSTEM/PUBLIC “dtdname.dtd”>


    3.
    所有標(biāo)識(shí)必須有相應(yīng)的結(jié)束標(biāo)志,空標(biāo)識(shí)也必須關(guān)閉如:<br/>,嚴(yán)格區(qū)分大小寫


    4.<![CDATA[
    這樣可以輸出一些特殊符號(hào)如<]]>//DTD字符或文本:<!ELEMENT user(#PCDATA)>


    5.Namespaces(xml
    文件定位DTD文件):<document xmlns:xl=”URL”><xl:table>wood</table>


    6.entity
    實(shí)體:<!DOCTYPE filename[<!ENTITY name “content”>]>    調(diào)用;&name


    7.DTD
    文件:<!ELEMENT datasource(driver,url,user,password)>//a:一次;a?:<=1;a+:>=1;a*:


    8.
    實(shí)例;<database-conf>

    <datasource>

              <driver>com.mysql.jdbc.Driver</driver>

              <url>jdbc:mysql://localhost:3306/test </url>

              <user>root</user>

              <password></password>

    </datasource>

    </database-conf>



    9.
    讀樹元素:StringBuffer讀入元素,最后存在HashtableProperties里面,并作為返回類型

    import java.util.Properties;import org.xml.sax.Attributes;

    import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;

    public class XMLConfigParser extends DefaultHandler{//可重載startElement等方法

    //DefaultHandler繼承了所有ContentHandler,Error,DTDHandler,EntityResolver接口

       private Properties props;//繼承了Hashtable,表示一個(gè)持久屬性集合

       private StringBuffer currentValue=new StringBuffer();//類似字符串緩沖區(qū),不能修改

         public XMLConfigParser(){  this.props=new Properties();   }

         public Properties getProps(){  return this.props;  }

       public void startElement(String uri,String localName,String qName,

               Attributes attributes)throws SAXException{//Attributesxml屬性列表接口

           currentValue.delete(0,currentValue.length()); }

       public void characters(char[] ch,int start,int length)throws SAXException{

           currentValue.append(ch,start,length); }

    public void endElement(String uri,String localName,String qName)throws SAXException{

        props.put(qName.toLowerCase(), currentValue.toString().trim());}}//小寫


    10.
    調(diào)用SAX解析: import java.net.URL;import java.util.Properties;

    import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;

    public class DatabaseConfigParser {private Properties props;

    public Properties getProps(){    return this.props;}

    public void parse(String filename)throws Exception{

    XMLConfigParser handler=new XMLConfigParser();

    SAXParserFactory factory=SAXParserFactory.newInstance();//解析器,調(diào)用適當(dāng)handler

    SAXParser parser=factory.newSAXParser();//xmlDefaultHandler對(duì)象傳遞給解析器

    URL confURL=XMLConfigParser.class.getClassLoader(類加載器).getResource(filename);

        parser.parse(confURL.toString(), handler); props=handler.getProps();  }


    測試:public static void main(String[] args){

        DatabaseConfigParser databaseConfig=new DatabaseConfigParser();

        try{    databaseConfig.parse("database.conf.xml");

                Properties dbProps=databaseConfig.getProps();

                System.out.println(dbProps.getProperty("driver"));

                System.out.print(dbProps.getProperty("url"));}

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

     


    使用:import java.util.Properties;import java.sql.*;

    public class Use{  private Connection conn; Properties dbProps;

          public Use()throws Exception{//通過構(gòu)造函數(shù)獲得

    DatabaseConfigParser databaseConfig=new DatabaseConfigParser();

           databaseConfig.parse("database.conf.xml");

    this.dbProps=databaseConfig.getProps();

     public Connection getConnection()throws java.sql.SQLException{

       try{ Class.forName(dbProps.getProperty(“driver”));}

       catch(java.lang.ClassNotFoundException e){System.out.println(“not found”);}

       return java.sql.DriverManager.getConnection(dbProps.getProperty(“url”),

              dbProps.getProperty(“user”), dbProps.getProperty(“password”));}

     


    11.
    利用DOM進(jìn)行解析:import org.w3c.dom.*;import org.apache.xerces.parsers.DOMParser;

    public class FirstDOMParser{  public static void main(String[] args) {

       try {DOMParser parser = new DOMParser(); parser.parse("D:\\Lixin\\ bank.xml");

       Document doc = parser.getDocument();// Document對(duì)象代表整個(gè)文檔,包含所有Node對(duì)象

       NodeList nodelist = doc.getElementsByTagName("client");

                System.out.println(nodelist.getLength() + " <client> elements."); 

       nodelist = doc.getElementsByTagName("employee");//返回子孫節(jié)點(diǎn)nodelist對(duì)象

                System.out.println(nodelist.getLength() + " <employee> elements.");

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

    posted on 2007-06-29 11:46 mrklmxy 閱讀(636) 評(píng)論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产成人亚洲精品狼色在线| 成人午夜视频免费| 四虎亚洲国产成人久久精品 | 久久精品亚洲视频| 国产V片在线播放免费无码| 免费又黄又爽的视频| 国产精品亚洲精品日韩动图| 国产精品无码一区二区三区免费| 亚洲AV无码之国产精品| 国产三级免费观看| 在线播放免费人成视频网站| 亚洲最大AV网站在线观看| 久青草视频97国内免费影视| 久久噜噜噜久久亚洲va久| 亚欧色视频在线观看免费| 亚洲中文无码亚洲人成影院| 小小影视日本动漫观看免费| 免费大片av手机看片高清| 超清首页国产亚洲丝袜| 日韩免费无码视频一区二区三区| 亚洲第一页在线观看| 青青草国产免费久久久下载| 一级毛片免费在线观看网站| 亚洲AV永久无码精品| 在线观看视频免费完整版| 亚洲hairy多毛pics大全| 精品亚洲一区二区三区在线播放| 黄色免费在线网站| 亚洲国产日韩综合久久精品| 亚洲?V无码乱码国产精品| 成人精品一区二区三区不卡免费看| 亚洲欧洲日本国产| 又粗又硬免费毛片| 久久精品一区二区免费看| 亚洲娇小性色xxxx| 中文字幕亚洲一区二区三区| 免费黄色福利视频| 免费手机在线看片| 亚洲手机中文字幕| 亚洲av麻豆aⅴ无码电影| 一级毛片在线观看免费|