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

1、前言html

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

二、類說明:共四個類:Zen   |  Shan  |   Gai   |   Cha   (一個類只作一件事,簡單明瞭)dom

三、引用jar包:dom4j-1.6.1.jareclipse

四、反饋方式:郵箱 xiang.jia.kang147@Gmail.com工具

五、使用的源XML名爲:Humen.xml  內容以下spa

 

 

2、源碼orm

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

/**
* 做者:向家康
* 版權全部 禁止轉發
*/
package 正式版.XML.增刪改查;htm

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("添加節點成功!!");
}
}

 

 

二、在源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("成功");
}
}

三、在源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("成功");
}
}

四、在源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 路徑語言 此文暫不呈上,見諒,本文面向大衆。
}
}

查詢結果:

 

 

 

 

源碼能夠直接粘貼使用,

 

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

 

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

 

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

 

原文出處:https://www.cnblogs.com/Xiangjiakang/p/11577668.html

相關文章
相關標籤/搜索