簡單SAX解析詳解全過程

2021-07-11 15:10:13 字數 3086 閱讀 4331

解析步驟:

1.建立乙個saxparse***ctory物件

saxparse***ctory factory=saxparse***ctory.newinstance();

2.獲得解析器

saxparser parser=factory.newsaxparser();

3.呼叫解析方法解析xml,這裡的第乙個引數可以傳遞檔案、流、字串、需要注意第二個引數(new defaulthander)

file file=new file("girls.xml");

parser.parse(file,new defaulthandler());

/**註解:--->這裡的defaulthandler表示

defaulthandler類是sax2事件處理程式的預設基類。它繼承了entityresolver、dtdhandler、

contenthandler和errorhandler這四個介面。包含這四個介面的所有方法,所以我們在編寫事件處理程式時,

可以不用直接實現這四個介面,而繼承該類,然後重寫我們需要的方法,所以在這之前我們先定義乙個用於實現解析

方法如下:*/

4.建立乙個myhandler類來繼承defaulthandler並重寫方法

//定乙個名為myhandler類用來繼承defaulthandler

(1)myhandler extends defaulthander

(2)重寫方法,快速記住方法(2個開始,2個結束,1乙個文字(charactor--裡面的內容))

(3)2個開始:startdocment(文件的開始)startelement(元素的開始) 2個結束:endelement(元素的結束)

enddocment(文件的結束,標誌著xml檔案的結束) 1個文字內容:charactor(文字內容)

5.建立乙個集合把所解析的內容新增到集合

//分析:目的我們只是需要把xml裡面的文字內容新增到我們的集合而不需要其他元素,所以我們需要進行判斷得到

//(接上)我們需要的內容(下面會賦乙個圖幫助理解)

6.接步驟三 輸出集合system.out.pritnln(list); 解析完成!

*老套路 封裝屬性 setter getter tostring

*@author sky°

*@date 2016-5-5

*@version 1.0

*/public

class

girl

public

void

setid(string id)

public string getname()

public

void

setname(string name)

public string getage()

public

void

setage(string age)

@override

public string tostring()

}

* 繼承default

* 乙個用來處理girls 裡面xml 資料的處理器

* 配合saxparser一起使用 目標:想要將girls

* 裡面的資料,存在乙個集合裡面以備後面使用

* * 獲取五種方法

* startdocment startelement

* characters enddocment endelement

* @author sky°

* @date

2016-5-5

* @version

1.0 */

public

class

myhandler

extends

defaulthandler

@override

public

void

startelement(string uri, string localname, string qname,

attributes attributes) throws saxexception

}@override

public

void

endelement(string uri, string localname, string qname)

throws saxexception

}@override

public

void

characters(char ch, int start, int length)

throws saxexception else

if ("age".equals(tag)) //這兩種情況,表示 當前語句執行在 girls 標籤內。

}// 外部設定和獲得值(getter setter)

public listgetgirls()

public

void

setgirls(listgirls)

public girl getgirl()

public

void

setgirl(girl girl)

}

* sax解析步驟

(因為這個是先解析好了 後面才加的id屬性 所以沒有對id這段進行解析 )

DNS 解析全過程

首先,瀏覽器檢查自身快取中是否有該網域名稱對應的 ip 位址,若有則解析結束。如果瀏覽器中沒有命中,就回去檢查作業系統快取中有沒有對應的已解析過的結果。在 windows 中的 c盤的 hosts 檔案。如果這次也沒有命中,就會取請求本地網域名稱伺服器 ldns 來解析。一般來說,百分之80的網域名...

詳解DNS網域名稱解析全過程

關於dns網域名稱解析大致過程如圖 頂級網域名稱介紹 1.瀏覽器先檢查自身快取中有沒有被解析過的這個網域名稱對應的ip位址,如果有,解析結束。同時網域名稱被快取的時間也可通過ttl屬性來設定。2.如果瀏覽器快取中沒有 專業點叫還沒命中 瀏覽器會檢查作業系統快取中有沒有對應的已解析過的結果。而作業系統...

DNS網域名稱解析全過程

1.應用發起基於網域名稱的請求後,linux先查詢本地dns cache。2.本地dns cache命中 cache中有該網域名稱的紀錄項 則返回目標ip位址,否則將網域名稱解析請求傳送給本地網域名稱解析伺服器 dns server 3.網域名稱伺服器 dns server 收到請求後,先查詢本地快...