XML解析之dom4j
生活随笔
收集整理的這篇文章主要介紹了
XML解析之dom4j
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
xml解析思想
數據存儲在xml文件中,如果想要將其讀取到java內存中,這時就需要對xml進行解析,解析xml有下面兩個思想:
1.dom
dom會將xml文檔加載進內存,形成dom樹(document對象),將文檔的各個組成部分封裝為對象。
優點:可以對dom樹進行增刪改查。
缺點:dom樹非常占內存,解析速度慢。
2.sax
逐行讀取,基于事件驅動
優點:不占內存,速度快
缺點:只能讀取,不能回寫
xml常用解析器
JAXP:sun公司提供的解析器,支持dom和sax,不過使用的不多。
JDOM: DOM4J的前身
DOM4J:全稱是dom for java,是jdom的升級版,性能優異,使用較為廣泛。
下載dom4j相關的jar包,解壓后拷貝到web項目的lib文件夾下
<?xml version="1.0" encoding="UTF-8"?><students><student id="1001"><name>alex</name><age>20</age></student><student><name>jan</name><age>22</age><![CDATA[if(5>3&&3<6)<abc></abc>]]></student><student><name>john</name><age>12</age></student><student><name>marry</name><age>20</age></student> </students>讀取xml文件:
package firsttomcats;import java.util.List;import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.junit.Test;public class dom4j {@Testpublic void test1() throws DocumentException {//創建一個xml解析對象SAXReader read=new SAXReader();//把xml文檔加載到document對象中Document doc=read.read("src/1.xml");//獲取根節點Element root=doc.getRootElement();//獲取當前節點的所有子節點List list=root.elements();Element third=(Element)list.get(2);String name=third.element("name").getText();System.out.println(name);}@Testpublic void test2() throws DocumentException {//創建一個xml解析對象SAXReader reader=new SAXReader();//把xml文檔加載到document對象中Document doct=reader.read("src/1.xml");//獲取根節點Element root=doct.getRootElement();select(root);}//遞歸private void select(Element ele) {//輸出當前節點的名字System.out.println(ele.getName());for(int i=0;i<ele.nodeCount();i++) {//取出下標為i的節點Node node=ele.node(i);//判斷當前節點是否為標簽if(node instanceof Element) {select((Element) node);}else {System.out.println(node.getText());}}} }轉載于:https://www.cnblogs.com/hzdwwzz/p/10361975.html
總結
以上是生活随笔為你收集整理的XML解析之dom4j的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BS4xpath的使用
- 下一篇: 二.安全NA之ASA基础