dom4j和jaxp解析工具的
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流中的指針移動
總結
以上是生活随笔為你收集整理的dom4j和jaxp解析工具的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10蓝牙开关不见了_来自德国,比J
- 下一篇: VS2015编译OpenDDS