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


    測(cè)試: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 閱讀(640) 評(píng)論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av永久无码精品秋霞电影影院 | 亚洲精华国产精华精华液网站 | 在线电影你懂的亚洲| 国内精品乱码卡1卡2卡3免费| 一本色道久久综合亚洲精品蜜桃冫| 亚洲?v女人的天堂在线观看| a视频在线观看免费| 亚洲一区二区三区不卡在线播放| 亚洲av无码成人精品区在线播放 | 亚洲偷自拍拍综合网| 精品国产污污免费网站aⅴ| 3d成人免费动漫在线观看| 亚洲欧洲国产综合AV无码久久| 国产亚洲精品线观看动态图| 丁香花免费完整高清观看| 国产精品免费久久久久久久久| 亚洲毛片基地日韩毛片基地 | 亚洲欧美乱色情图片| 国产亚洲高清不卡在线观看| 好爽…又高潮了毛片免费看| 亚洲免费观看视频| 特级毛片免费观看视频| 亚洲国产成人手机在线电影bd| 最新精品亚洲成a人在线观看| 成人毛片免费网站| 一区二区三区在线免费看 | 韩国二级毛片免费播放| 午夜免费福利片观看| 一级特级aaaa毛片免费观看| 亚洲一本到无码av中文字幕| 亚洲精品国产成人99久久| 亚洲午夜日韩高清一区| 永久黄网站色视频免费| 在线观看免费视频资源| 国产免费网站看v片在线| 麻豆va在线精品免费播放| 国产亚洲sss在线播放| 亚洲美女视频一区| 亚洲gv白嫩小受在线观看| 久久亚洲国产成人影院网站| 成人国产mv免费视频|