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);
		
		
	}
}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TOMCAT启动错误:严重: Error filterStart「建议收藏」

    TOMCAT启动错误:严重: Error filterStart「建议收藏」在tomcat启动的时候报严重:ErrorfilterStart这样的错误的原因有很多种,比如你在web.xml的配置语句写漏或写错或缺少某些jar包等等都有可能发生,子猴这里给出的不是针对某一具体错误如何解决,而是给出如何查找出错原因?我发现网上很多朋友都碰到过这样的错误信息而束手无策,往往花费很多时间,而归根结底是不知道如何得知错误是怎么产生的,因为tomcat(往往都是使用的tomca

    2022年7月11日
    23
  • webstorm2022.01激活码_最新在线免费激活[通俗易懂]

    (webstorm2022.01激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    1.1K
  • About Heartbleed

    About HeartbleedTwoarticlesforheartbleedbuhttp://gizmodo.com/how-heartbleed-works-the-code-behind-the-internets-se-1561341209http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html

    2022年7月25日
    8
  • MPLS 虚拟专用网络 Hub and Spoke实验

    MPLS 虚拟专用网络 Hub and Spoke实验

    2021年4月12日
    968
  • 知识图谱—知识推理综述(三)

    知识图谱—知识推理综述(三)知识图谱—知识推理综述(三)接上一篇文章知识图谱—知识推理综述(二)3基于表示的知识推理3.1方法简述在之前所介绍的知识推理中,都显示的定义了知识推理所需要的规则,条件等等离散符号。而在基于表示的知识推理中,我们第一步是将知识图谱中的节点和关系进行连续向量空间的映射,需要将其物理表示映射为数值表示,然后在利用数学中的相关算法,通过数值计算的方式进行知识推理。对于映射的向量空间而言,其可以是一个或者多个的向量或者矩阵。基于表示的推理的核心在于“如何表示”,在表示学习的过程中,我们需要的是让算法自

    2022年5月12日
    41
  • java栈方法_java栈的两种实现方法[通俗易懂]

    java栈方法_java栈的两种实现方法[通俗易懂]java栈的实现有两种方式:一.使用数组来实现://使用数组实现栈,功能包括进行内存扩展publicclassStack{privateint[]data;privateintlength;//表示初始化栈的内存长度privateinttop;//用来表示栈的实际长度privatefinalintexpandLength=20;//表示扩展的长度publicStack(i…

    2025年9月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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