java使用dom4j操作XML增刪改查-超簡潔


一、前言

1、使用工具:eclipse    環境:JDK-11

2、類說明:共四個類:Zen   |  Shan  |   Gai   |   Cha   (一個類只做一件事,簡單明了)

3、引用jar包:dom4j-1.6.1.jar

4、反饋方式:郵箱 xiang.jia.kang147@Gmail.com

5、使用的源XML名為:Humen.xml  內容如下

 

 

二、源碼

1、在源XML基礎上添加新的 節點、屬性、文本內容

/**
* 作者:向家康
* 版權所有 禁止轉發
*/
package 正式版.XML.增刪改查;

import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* 創作於 2019年9月23日 下午10:32:48
* 此類描述: XML 添加節點 屬性 文本內容
*/
public class Zen {
public static void main(String[] args) throws Exception {


Document doc = new SAXReader().read("src/正式版/XML/增刪改查/Humen.xml");

Element root = doc.getRootElement();//得到根節點

Element San = root.addElement("Hum");//用根節點root創建一個Hum節點           -- 添加節點
Element name = San.addElement("name");//給新的Hum創建子節點 name和age --添加子節點
Element age = San.addElement("age");

name.addAttribute("id", "003");//給name附上屬性和屬性值    --添加屬性
name.setText("老胡");//設置name標簽內文本內容        --添加文本
age.setText("20");//設置age標簽內文本內容


//這里是保存路徑相同相當於是更新內容 (文檔有變動都需要此操作)
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter("src/正式版/XML/增刪改查/Humen.xml"),format); 
writer.write(doc);
writer.close();
System.out.println("添加節點成功!!");
}
}

 

 

2、在源XML基礎上 刪除指定 節點、屬性、文本內容

/**
* 作者:向家康
* 版權所有 禁止轉發
*/
package 正式版.XML.增刪改查;

import java.io.FileWriter;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* 創作於 2019年9月23日 下午10:33:04
* 此類描述: XML刪除 指定 節點 屬性 文本
*/
public class Shan {

public static void main(String[] args) throws Exception {

Document doc = new SAXReader().read("src/正式版/XML/增刪改查/Humen.xml");//得到文檔

Element root = doc.getRootElement();//得到根節點

List<Element> list = root.elements();//得到根節點下的所有兒子節點【Hum】

//刪節點操作
Element H= list.get(2).element("name");//通過第三個Hum,找到name節點
H.detach();//刪除第三個Hum中的name節點(精確刪節點)

Element H2= list.get(2);//得到第三個Hum節點
H2.detach();// 刪除第三個Hum節點--刪整個節點(誅九族)

//刪屬性操作 (一般不會刪屬性值保留屬性的,如有此需求,直接修改屬性值為空就好了)
Attribute arr = H.attribute("id");//從孫子name腦殼上找到id屬性
arr.detach();//刪除這個 id==003             

//第二種方式 通過父節點調用remove() 可以刪子節點 屬性 文本 怎么方便怎么用


//這里是保存,路徑相同相當於是更新內容
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
XMLWriter w = new XMLWriter(new FileWriter("src/正式版/XML/增刪改查/Humen.xml"),format);
w.write(doc);
w.close();
System.out.println("成功");
}
}

3、在源XML基礎上 修改指定 節點名、屬性值、文本內容

/**
* 作者:向家康
* 版權所有 禁止轉發
*/
package 正式版.XML.增刪改查;

import java.io.FileWriter;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* 創作於 2019年9月23日 下午10:33:14
* 此類描述: 修改 節點名 屬性值 文本內容
*/
public class Gai {

public static void main(String[] args) throws Exception {

Document doc = new SAXReader().read("src/正式版/XML/增刪改查/Humen.xml");//得到文檔對象

Element root = doc.getRootElement();//得到根節點

List<Element> list = root.elements();//得到根節點下的所有兒子節點【Hum】

Element H= list.get(2).element("name");//通過第三個Hum,找到name節點
H.setName("666");//修改節點名稱

Attribute arr = H.attribute("id");//從name節點找到id屬性
arr.setValue("055");//修改id為055 -修改屬性(一般不會修改屬性名保留屬性值,可刪除屬性添加屬性來實現)

Element H2 = list.get(2).element("age");//得到老胡年齡
H2.setText("18");//修改age為18 -修改內容


//這里是保存,路徑相同相當於是更新內容
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
XMLWriter w = new XMLWriter(new FileWriter("src/正式版/XML/增刪改查/Humen.xml"),format);
w.write(doc);
w.close();
System.out.println("成功");
}
}

4、在源XML基礎上 查詢指定 節點名、屬性及屬性值、文本內容

/**
* 作者:向家康
* 版權所有 禁止轉發
*/
package 正式版.XML.增刪改查;

import java.io.File;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

/**
* 創作於 2019年9月23日 下午10:33:27
* 此類描述: 查詢 節點名  節點屬性和屬性值  文本內容
*/
public class Cha {

public static void main(String[] args) throws Exception {

Document doc = new SAXReader().read(new File("src/正式版/XML/增刪改查/Humen.xml"));

Element root = doc.getRootElement();//得到根節點

List<Element> E = root.elements();//得到子節點全體

for(int i=0;i<E.size();i++) {
System.out.println("第"+(i+1)+"節點名"+E.get(i).getName());
}

//得到第一個Hum里面的 子節點名 屬性 屬性 (為了打印好看才調getName,增刪改時不用調)
Element N = E.get(0).element("name");//得到第一個Hum節點中的name節點
Element N2 = E.get(0).element("age");//得到第一個Hum節點中的age節點

System.out.print("節點名:"+N.getName());

Attribute D = N.attribute("id"); //多個屬性時使用集合 List<Attribute> D = N.attributes(); 再遍歷

System.out.print(" 屬性:"+D.getName()+" 屬性值:"+D.getValue());

System.out.println("\n\tname 內容:"+N.getText()+" age 內容:"+N2.getText());

//方式二 Xpath 路徑語言 此文暫不呈上,見諒,本文面向大眾。
}
}

查詢結果:

 

 

 

 

源碼可以直接粘貼使用,

 

但注意刪改的時候,不要直接運行,

 

比如刪了某元素,后面改和查可能找不到了節點了報錯

 

建議:看明白了,再操作。

 


免責聲明!

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



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