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

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

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

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統計

    最新評論

    利用SAX和DOM對XML解析

    Xml解析

    Xml文件:

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


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


    3.
    所有標識必須有相應的結束標志,空標識也必須關閉如:<br/>,嚴格區分大小寫


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


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


    6.entity
    實體:<!DOCTYPE filename[<!ENTITY name “content”>]>    調用;&name


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


    8.
    實例;<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,表示一個持久屬性集合

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

         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.
    調用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();//解析器,調用適當handler

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

    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{//通過構造函數獲得

    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進行解析: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對象代表整個文檔,包含所有Node對象

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

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

       nodelist = doc.getElementsByTagName("employee");//返回子孫節點nodelist對象

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

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

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 男女一边桶一边摸一边脱视频免费| 色综合久久精品亚洲国产| 24小时日本韩国高清免费| 亚洲欧美日韩中文字幕在线一区| 免费一级毛片正在播放| 久久大香香蕉国产免费网站| 亚洲中文字幕无码久久2020 | 在线免费观看一级毛片| 人人爽人人爽人人片av免费| 亚洲短视频男人的影院| 日本一道高清不卡免费| 国产va在线观看免费| 色欲aⅴ亚洲情无码AV| 亚洲视频小说图片| 久久亚洲色一区二区三区| 精品久久久久久久久免费影院| 国产日韩精品无码区免费专区国产| 亚洲福利视频网址| 久久久久亚洲精品男人的天堂| 香蕉97超级碰碰碰免费公| 中文字幕av免费专区| 亚洲久热无码av中文字幕| 亚洲图片一区二区| 亚洲国产精品成人久久蜜臀 | 欧美最猛性xxxxx免费| 大地资源中文在线观看免费版| 亚洲永久网址在线观看| 亚洲欧洲第一a在线观看| 亚洲男人av香蕉爽爽爽爽| 久久久久免费看黄A片APP| 99久久99热精品免费观看国产| 一级特级aaaa毛片免费观看| 亚洲中文字幕一区精品自拍| 亚洲美女自拍视频| 亚洲AV永久无码精品一百度影院| 亚洲av中文无码| 精品免费久久久久久成人影院| 可以免费看黄的网站| 91久久精品国产免费一区| 野花香在线视频免费观看大全| 无码的免费不卡毛片视频|