dom4j和jaxp解析工具的
node
? ? --branch
? ? --document?
? ? --element
? ? --commment?
? ? --attribute
? ? --text
branch
? ? --document
? ? --element
jaxp解析中的幾個對象
node
? ? --document
? ? --element
? ? --commment
? ? --attr
? ? --text
dom4j解析
中全部對象都是node對象的子節(jié)點,也就是說它把說有對象都單獨分離出來看成一個對象,而branch是一個對經(jīng)常使用節(jié)點的封裝和關(guān)聯(lián),如Element對象就包括了有attribute對象和text對象,而document對象就封裝了全部節(jié)點對象
jaxp的dom解析
jaxp的dom解析方式?jīng)]有branch節(jié)點,沒有將各個節(jié)點進(jìn)行封裝,全部操作的都是node節(jié)點;
? ? 并且由于節(jié)點間沒有關(guān)聯(lián)屬性,所以在創(chuàng)建節(jié)點后須要進(jìn)行關(guān)聯(lián),刪除節(jié)點時須要找父節(jié)點
? ? 細(xì)節(jié):node的節(jié)點沒有獲得attribute的方法,僅僅有Element才有獲得attribute的方法
dom4j解析,jaxp的dom解析的共同點
1.通過依據(jù)條件查詢后的結(jié)果都是一個list集合
2.改動text或textContent時既能夠用Node也能夠用Element
xml文檔解析方式有兩種dom和sax,經(jīng)常使用開發(fā)工具有兩種jaxp,dom4j
jaxp:將兩種解析方法分開了,dom解析和sax解析,sax解析方法沒有寫方法
dom4j:把兩種解析方式結(jié)合起來,取文件時採用sax解析,寫文件時採用dom解析,繼承了兩種解析方式的長處
關(guān)于sax解析:
sax解析事實上也是把文檔載入進(jìn)內(nèi)存中,可是這個緩存區(qū)僅僅有3M左右的大小(能夠用一個大文檔,然后打印characters方法中的start值觀察),假設(shè)文檔非常小,所有載入進(jìn)內(nèi)存,假設(shè)文檔非常大,緩存區(qū)慢后會自己主動清空緩存區(qū),繼續(xù)載入興許數(shù)據(jù),這個緩存數(shù)組就是characters()方法參數(shù)列表中的ch。
也就是說,假設(shè)要讀取一個小文檔,僅僅須要復(fù)寫這一個方法就能夠了,然后將字符數(shù)組轉(zhuǎn)成字符串打印就能夠了,或者依據(jù)角標(biāo)取響應(yīng)的數(shù)據(jù)。
public void characters(char[] ch, int start, int length){
? ? System.out.println(new String(ch,10,2));
}
然后文檔的讀取事實上就相當(dāng)于IO流中的指針移動
總結(jié)
以上是生活随笔為你收集整理的dom4j和jaxp解析工具的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10蓝牙开关不见了_来自德国,比J
- 下一篇: VS2015编译OpenDDS