<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)航:
     
    主站蜘蛛池模板: 久久精品私人影院免费看| 亚洲日韩精品无码专区加勒比| 国产av无码专区亚洲国产精品| 全亚洲最新黄色特级网站| 国产精品jizz在线观看免费| 国产男女猛烈无遮档免费视频网站| 妞干网免费观看视频| 国产青草视频免费观看97| 国产免费拔擦拔擦8x| 全亚洲最新黄色特级网站 | 99视频在线精品免费观看6| 免费看国产成年无码AV片 | 福利免费在线观看| a毛片在线看片免费| 99精品视频免费在线观看| 18观看免费永久视频| 亚洲成在人线aⅴ免费毛片| 美女黄网站人色视频免费国产| 热99re久久精品精品免费| 免费一看一级毛片| 国产成人99久久亚洲综合精品 | 成熟女人特级毛片www免费| 日韩免费观看一级毛片看看| 国产一区视频在线免费观看| 久久精品国产亚洲精品| 亚洲AV永久青草无码精品| 亚洲精品美女在线观看| 亚洲日韩亚洲另类激情文学| 香港经典a毛片免费观看看| 成年免费a级毛片免费看无码| 亚洲免费视频网站| 毛片网站免费在线观看| 亚洲国产成人VA在线观看| 亚洲高清国产AV拍精品青青草原| 亚洲精品国产成人中文| 亚洲国产欧美日韩精品一区二区三区 | 国产精品亚洲二区在线观看 | 午夜亚洲av永久无码精品| 亚洲AV无码成人精品区天堂| 亚洲视频一区二区三区四区| 本道天堂成在人线av无码免费|