用Dom4j來解析XML文件


Dom4j jar包地址https://pan.baidu.com/s/1eNExExlFHIecfW_6YkXpvw  提取碼:w5om

首先解壓Dom4j jar包,解壓后如下

然后把  dom4j-1.6.1.jar  復制放到工程目錄下(集成開發工具是myeclipse)

在myeclipse工程下直接右鍵dom4j-1.6.1.jar,點擊Build Path → Add to Build Path

myeclipse自動導入jar包,然后就可以使用jar包提供的接口了。

我們創建一個book.xml文件放到src目錄下

book.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>

<書架>
  <書 >
    <書名>時間簡史</書名>
    <作者>霍金</作者>
    <售價>60</售價>
  </書>
  <書>
    <書名>廣義相對論</書名>
    <作者>愛因斯坦</作者>
    <售價>65</售價>
  </書>
</書架>

Dom4j_parseXML.java編寫解析代碼

需要導入的包:

import java.io.FileOutputStream;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

注意:除了FileOutputStream和List不是dom4j包的,其他的都是

創建解析器

//創建dom4j解析器
SAXReader reader = new SAXReader();
//加載document對象
Document document = reader.read("src/book.xml");

 

得到某個節點的內容

//拿到根節點
Element root = document.getRootElement();
//拿到所有的書節點
List<Element> list = root.elements("書");
//拿到第二本書
Element bookE1 = list.get(1);
//獲取售價文本
System.out.println(bookE1.elementText("售價"));

 

遍歷所有元素節點

public static void ergodic(Document document) {
  treeWalk( document.getRootElement() );
}

public static void treeWalk(Element element) {
  for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
    Node node = element.node(i);
    if ( node instanceof Element ) {
      System.out.println(node.getName());
      treeWalk( (Element) node );
    }
  }
}

 

修改某個元素節點的主體內容

//獲取根節點
Element root = document.getRootElement();
//拿到第二種書節點
Element bookEL = (Element) root.elements("書").get(1);
//拿到售價節點
Element priceE1 = bookEL.element("售價");
//改變主體內容
priceE1.setText("55");

//將結果保存到硬盤上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

 

向指定元素節點中添加子元素節點

//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);
//拿到售價節點
Element priceE1 = bookEL.element("售價");

//添加子節點
priceE1.addElement("內部價").setText("50");

//將結果保存到硬盤上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

 

向指定元素節點上增加同級元素節點

//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);

//給書節點添加子節點
bookEL.addElement("批發價").setText("30");

//將結果保存到硬盤上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

 

刪除指定的元素節點

Element root = document.getRootElement();
Element bookEL = (Element) root.elements("書").get(0);
Element insideprice = bookEL.element("售價").element("內部價");
//刪除
insideprice.getParent().remove(insideprice);

//將結果保存到硬盤上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

 

操作文件的屬性

//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);

//增加一個屬性
bookEL.addAttribute("類", "科普");

//將結果保存到硬盤上

XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();

 

以上就是用dom4j來解析XML文件的幾種方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM