java dom4j 增删改查[通俗易懂]

java dom4j 增删改查[通俗易懂]packagecn.itcast.dom4j;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.util.List;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Document

大家好,又见面了,我是你们的朋友全栈君。

package cn.itcast.dom4j;

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

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Assert;
import org.junit.Test;


public class Dom4JDemo {
//	1、得到某个具体的节点内容:第2本书的作者
	@Test
	public void test1() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		//依次得到第2本书的作者
		List<Element> es = root.elements("书");
		Element e = es.get(1);
		Element author = e.element("作者");
		//拿到内容打印输出
//		System.out.println(author.getText());
		Assert.assertEquals("毕向东", author.getText());
	}
	@Test
	public void test11() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		
		String xpath = "//书[2]/作者";
		Node author = document.selectSingleNode(xpath);
		
		//Assert.assertEquals("毕向东", author.getText());
	}
//	2、遍历所有元素节点:
	@Test
	public void test2() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		treeWalk(root);//遍历所有的元素,打印他的名称
	}
	private void treeWalk(Element root) {
		System.out.println(root.getName());
		List<Element> es = root.elements();
		for(Element e:es){
			treeWalk(e);
		}
	}
//	private void treeWalk(Element root){
//		System.out.println(root.getName());
//		//节点的数量
//		int count = root.nodeCount();
//		for(int i=0;i<count;i++){
//			Node node = root.node(i);//取索引上节点
//			if(node.getNodeType()==Node.ELEMENT_NODE){
//				treeWalk((Element)node);
//			}
//		}
//	}
	
//	3、修改某个元素节点的主体内容:修改第2本书的售价
	@Test
	public void test3() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		//得到第2本书的售价
		Element secondBook = (Element) root.elements().get(1);
		Element secondBookPrice = secondBook.element("售价");
		//设置主体内容
		secondBookPrice.setText("8.00");
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	4、向指定元素节点中增加子元素节点:给第1本书添加批发价
	@Test
	public void test4()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书:直接添加新元素
		Element firstBook = root.element("书");
		firstBook.addElement("批发价").setText("1");
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	5、向指定元素节点上增加同级元素节点:在第一本书的售价前面添加内部价
	@Test
	public void test5()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		//得到第1本书的所有子元素:List
		List<Element> children = firstBook.elements();
		//借助DocumentHelper创建内部价元素
		Element price = DocumentHelper.createElement("内部价");
		price.setText("99");
		//挂接到老3的位置上
		children.add(2, price);
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	6、删除指定元素节点:删除批发价
	@Test
	public void test6()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		//自己不能删自己
		Element price = firstBook.element("批发价");
		firstBook.remove(price);
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	7、操作XML文件属性:第1本书添加一个出版社属性
	@Test
	public void test7()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		firstBook.addAttribute("出版社", "传智播客");
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
	//获取第一本书的出版社属性值
	@Test
	public void test8()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		String value = firstBook.attributeValue("出版社");
		Assert.assertEquals("传智播客", value);
		
		
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159408.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • PHP获取本周所有日期或者最近七天所有日期「建议收藏」

    PHP获取本周所有日期或者最近七天所有日期

  • ubuntu python安装pip_ubuntu离线安装pip

    ubuntu python安装pip_ubuntu离线安装pip说明pip是一个安装和管理Python包的工具。在Pip的帮助下,你可以安装独特版本的包。最重要的是,Pip可以通过一个“requirements”的工具来管理一个由包组成的列表和版本号。Pip很像easy_install,但是Pip有一些额外的特色。ubuntu安装pip#建议在操作前将源替换为163或阿里的源#1.更新系统包sudoapt-getupdatesud

    2022年10月27日
  • maven安装步骤_eclipse使用maven教程

    maven安装步骤_eclipse使用maven教程前言本篇文章是基于win10系统下载安装Maven的教程。一、Maven介绍1.什么是Maven​ Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。2.Maven的作用依赖管理依赖指的就是是我们项目中需要使用的第三方

  • 卷积神经网络全过程

    卷积神经网络全过程作为计算机视觉中最重要的部分卷积神经网络,从输入到输出做一个全方面的梳理。卷积神经网络一般包含:卷积层池化层全连接层卷积层计算机视觉中为什么要使用卷积操作:假设我们输入的图像大小为64*64的RGB小图片,数据量就是64*64*3,计算得到数据量大小为12288。如果输入为1000*1000的RGB图片,那么数据量将是300万(3m表示300万),也就是我们要输入的特征向量xxx的维度高达300万。如果在第一隐藏层中有1000个神经单元,该层的权值矩阵为W

  • 测试用例的设计方法(全)「建议收藏」

    测试用例的设计方法(全)「建议收藏」测试用例的设计方法(全)等价类划分方法:一.方法简介1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。   2.划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类

    2022年10月12日
  • luigi框架–关于python运行spark程序

    luigi框架–关于python运行spark程序

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号