程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> dom4j和jaxp解析工具的

dom4j和jaxp解析工具的

編輯:C++入門知識

dom4j解析中的幾個對象

node

--branch

--document

--element

--commment

--attribute

--text

branch

--document

--element

jaxp解析中的幾個對象

node

--document

--element

--commment

--attr

--text


dom4j解析

中所有對象都是node對象的子節點,也就是說它把說有對象都單獨分離出來看成一個對象,而branch是一個對常用節點的封裝和關聯,如Element對象就包含了有attribute對象和text對象,而document對象就封裝了所有節點對象

jaxp的dom解析

jaxp的dom解析方式沒有branch節點,沒有將各個節點進行封裝,所有操作的都是node節點;

而且因為節點間沒有關聯屬性,所以在創建節點後需要進行關聯,刪除節點時需要找父節點

細節:node的節點沒有獲得attribute的方法,只有Element才有獲得attribute的方法

dom4j解析,jaxp的dom解析的共同點

1.通過根據條件查詢後的結果都是一個list集合

2.修改text或textContent時既可以用Node也可以用Element


xml文檔解析方式有兩種dom和sax,常用開發工具有兩種jaxp,dom4j

jaxp:將兩種解析方法分開了,dom解析和sax解析,sax解析方法沒有寫方法

dom4j:把兩種解析方式結合起來,取文件時采用sax解析,寫文件時采用dom解析,繼承了兩種解析方式的優點


關於sax解析:

sax解析其實也是把文檔加載進內存中,但是這個緩存區只有3M左右的大小(可以用一個大文檔,然後打印characters方法中的start值觀察),如果文檔很小,全部加載進內存,如果文檔很大,緩存區慢後會自動清空緩存區,繼續加載後續數據,這個緩存數組就是characters()方法參數列表中的ch。

也就是說,如果要讀取一個小文檔,只需要復寫這一個方法就可以了,然後將字符數組轉成字符串打印就可以了,或者根據角標取響應的數據。

public void characters(char[] ch, int start, int length){

System.out.println(new String(ch,10,2));

}

然後文檔的讀取其實就相當於IO流中的指針移動

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved