使用dom4j对xml文件进行增、删、改、查

本文介绍了使用dom4j库进行XML文件的增删改查操作的具体步骤与示例代码,包括获取解析器、解析XML文档、获取根节点及利用根节点进行CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dom4j进行CRUD的操作基本上只需要分为四步骤,

           1.获取解析器

           2.解析XML获取代表整个文档的dom对象

           3.获取根节点

           4.利用根节点进行CRUD操作。

实现的代码如下:

/**
	 * 查找XML中的子元素
	 * */
	@Test
	public void dom4JSelect()throws Exception{
		//1.获取解析器
		SAXReader reader=new SAXReader();
		//2.解析XML获取代表整个文档的dom对象
		org.dom4j.Document document=reader.read("../MyXml.xml");
		//3.获取根节点
		Element root=document.getRootElement();
		//4.获取需要的标签的内容,dom4j不可以跨标签执行操作,需要循序查找标签
		String bookName=root.element("书").element("书名").getText();
		//只执行一次,即如果有多个书名的标签它一次性只查一个
		System.out.println("书名--"+bookName);
		
		//拿到根节点以下所有的子标签
		List<Element> list=root.elements();
		//拿到根节点的子标签列表中的第二个标签,这里根节点是“书架”它的子节点就是“书”,
		//即就是拿到第二个标签内容为“书”的标签
		Element bookEl2=list.get(1);
		String bookName2=bookEl2.element("书名").getText();
		System.out.println("书名--"+bookName2);
	}

	/**
	 * 向XML中添加子元素
	 * */
	@Test
	public void dom4JAdd()throws Exception{
		//1.获取解析器
		SAXReader reader=new SAXReader();
		//2.解析XML获取代表整个文档的dom对象
		org.dom4j.Document document=reader.read("../MyXml.xml");
		//3.获取根节点
		Element root=document.getRootElement();
		//创建节点,设置标签体
		Element element=DocumentHelper.createElement("特价");
		//给节点设置内容
		element.setText("40.0元");
		//获取创建的节点的父节点,即需要将新的节点挂载在哪一个节点的下面
		Element bookEle=root.element("书");
		//将创建的节点添加进去
		bookEle.add(element);
		
		//将内存中的dom树回写到文件中,更新文件
//		FileWriter fileWriter=new FileWriter("../day01/WebRoot/Jsp/MyXml.xml");
//		document.write(fileWriter);
//		fileWriter.flush();
//		fileWriter.close();
		
		//将内存中的dom树回写到文件中,更新文件  更好用,
		//OutputFormat.createPrettyPrint()帮助输出文件时格式化文件,美观
		XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("../MyXml.xml"),OutputFormat.createPrettyPrint());
		xmlWriter.write(document);
		xmlWriter.close();
	}

/**
	 * 修改XML中子元素内容
	 * */
	@Test
	public void dom4JUpdate()throws Exception{
		//1.获取解析器
		SAXReader reader=new SAXReader();
		//2.解析XML获取代表整个文档的dom对象
		org.dom4j.Document document=reader.read("../MyXml.xml");
		//3.获取根节点
		Element root=document.getRootElement();
		//获取需要修改的标签并将其内容修改
		root.element("书").element("特价").setText("4.0元");
		//将内存中的dom树回写到文件中,更新文件  更好用,
		//OutputFormat.createPrettyPrint()帮助输出文件时格式化文件,美观
		XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("../MyXml.xml"),OutputFormat.createPrettyPrint());
		xmlWriter.write(document);
		xmlWriter.close();
	}

/**
	 * 删除XML中子元素
	 * */
	@Test
	public void dom4JDelete()throws Exception{
		//1.获取解析器
		SAXReader reader=new SAXReader();
		//2.解析XML获取代表整个文档的dom对象
		org.dom4j.Document document=reader.read("../MyXml.xml");
		//3.获取根节点
		Element root=document.getRootElement();
		
		//删除的思路:找到要删除的标签,用该标签获取到它的父元素,通过它的父元素删除它
		Element bookEle=root.element("书").element("特价");
		bookEle.getParent().remove(bookEle);
		
		//将内存中的dom树回写到文件中,更新文件  更好用,
		//OutputFormat.createPrettyPrint()帮助输出文件时格式化文件,美观
		XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("../MyXml.xml"),OutputFormat.createPrettyPrint());
		xmlWriter.write(document);
		xmlWriter.close();
	}

<?xml version="1.0" encoding="UTF-8"?>
<!--  <!DOCTYPE 书架 SYSTEM "../book.dtd">-->
<书架> 
  <书> 
    <书名>如果AI拥有了思想</书名>  
    <作者>XX</作者>  
    <售价>140</售价> 
  </书>  
  <书> 
    <书名>人类是否完全依赖于AI</书名>  
    <作者>SS</作者>  
    <售价>170</售价> 
  </书> 
</书架>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值