xml的兩種解析方式 sax,dom4j

2021-06-28 14:39:13 字數 1684 閱讀 7578

兩種解析方式的優缺點:

sax解析:優點:不需要讀取整個檔案,並且將其儲存在內從中,不耗費記憶體資源,才用觸發監聽的方式,檔案讀到**觸發相應方法。

缺點:不能反覆呼叫,每次解析時都要從頭解析,只能進行查詢

dom4j:優點:只需解析一次,即可反覆呼叫。能夠進行增刪改查。

缺點:必須先整體的解析一次,拿到document物件,才能進行操作.耗費記憶體資源

市面上利用sax解析較多,因為大部分的需求都只是進行查詢。

sax解析

1,建立乙個sax解析器工廠 : saxparse***ctory factory=saxparse***ctory.newinstance( );

2,生成乙個sax解析器: saxparser parser=factory.newsaxparser( );

3,獲取乙個解析器: xmlreader reader=parser.getxmlreader();

4,註冊***: reader.setcontenthandler( new mycontenthandler());

mycontenthandle為我們自己所寫的繼承類。它實現contenthandle介面,或繼承defaulthandle來重現其中的方法實現相應的功能

5,解析xml:reader.parse("book.xml");

dom4j解析

dom4j不是有sun公司退出的解析方式,但其用法簡單很被推廣,使用其解析方式時需要匯入dom4j包。

1,或許解析器:saxreader reader=new saxreader();

2,利用解析器讀取此檔案:document document=reader.read("book.xml");

3,獲取其根節點:element root=document.getrootelement();

4,查詢標籤的內容:element book=root.element("書名");

5,新增某一節點:(1)生成乙個新的節點 docoument d=document.createelement("**");

(2)找到需要新增到哪乙個節點之下:element book=root.element("書");

(3)新增到書節點上:book.add(d);

6,刪除某一件點:(1)找到刪除的某一節點:document d=root.element("書").element("**");

(2)找到其父節點並從父節點上刪除此需要刪除的節點:d.getpareat().remove(d);

7,為某一節點新增屬性:(1)找到需要新增屬性的節點:element book=root.element("書");

(2)在此節點上新增屬性:book.addattribute("出版社"," **出啊版設");

8,刪除節點屬性和刪除節點類似,都是找到屬性,通過屬性的父類刪除這個屬性。

9,在進行增刪改時,以上的操作只是對記憶體中的document進行更改,並沒有寫到xml中的。

10,更行xml檔案:(1)xmlwriter writer = new xmlwriter(new fileoutputstream("book.xml"),outputformat.createprettyprint());outputformat.createprettyprint()能夠使寫進xml時有乙個好的格式

(2)writer.write(dom);

(3)writer.close();

XML解析的兩種方式區別

xml解析的兩種方式區別 1.dom解析 需要xml完全載入進記憶體才可以操作 可以方便進行增刪改查操作,耗費記憶體 2.sax解析 逐漸掃瞄xml檔案,當遇到標籤時觸發解析處理器,不需要載入進記憶體 只能讀取,無法進行增刪改查 dom解析 具體解析步驟如下 documentbuilde ctory...

XML常見的兩種解析方式總結

在程式開發過程中,經常需要對xml文件進行解析,常見套路往往是 xml文件 xml解析器 api 應用程式。經常用到的解析方式如下 dom解析 sax解析 具體解析步驟如下 documentbuilde ctory dbf documentbuilde ctory.newinstance 獲得解析工...

兩種XML解析方法

xml解析 概念 xml extended markup language,可擴充套件的標記性語言 可擴充套件 標籤 可以自己定義。張三30 李四40 html 超文字標記語言 文件中 標記 標籤 固定 pull 基於事件拉取的形式 事件 常量值 開始標籤 相應的動作 比如建立集合,物件。標籤和標籤...