java使用dom4j操作XML增删改查-超简洁
一、前言
1、使用工具:eclipse 环境:JDK-11
2、类说明:共四个类:Zen | Shan | Gai | Cha (一个类只做一件事,简单明了)
3、引用jar包:dom4j-1.6.1.jar
4、反馈方式:QQ联系群:950855473
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 路径语言 此文暂不呈上,见谅,本文面向大众。
	}
}
查询结果:

源码可以直接粘贴使用,
但注意删改的时候,不要直接运行,
比如删了某元素,后面改和查可能找不到了节点了报错
建议:看明白了,再操作。
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号