xml解析之使用dom4j的api对xml文件进行CRUD(二)

原创 2016年05月30日 21:46:03

在使用dom4j的api对xml文件进行CRUD(一)见博客http://blog.csdn.net/qq_32059827/article/details/51524330的基础上,再对做一次练习。

package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;

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

/**
 *  课堂练习: 
 * 1.使用dom4j的api来生成以下的xml文件
<Students>
<Student id="1">
	<name>张三</name>
	<gender>男</gender>
	<grade>计算机1班</grade>
	<address>广州天河</address>
</Student>
<Student id="2">
	<name>李四</name>
	<gender>女</gender>
	<grade>计算机2班</grade>
	<address>广州越秀</address>
</Student>
</Students>

2.修改id为2的学生的姓名,改为“王丽”

3.删除id为2的学生
 * @author APPle
 *
 */
public class Demo4 {

	/**
	 * 1.生成指定xml文档
	 * @throws Exception
	 */
	@Test
	public void test1() throws Exception{
		//1.内存创建xml文档
		Document doc = DocumentHelper.createDocument();
		
		//2.写入内容,第一个写入的就是根标签
		Element rootElem = doc.addElement("Students");
		
		//2.1 增加标签
		Element studentElem1 = rootElem.addElement("Student");
		//2.2 增加属性
		studentElem1.addAttribute("id", "1");
		//2.3 增加标签,【同时】设置文本
		studentElem1.addElement("name").setText("张三");
		studentElem1.addElement("gender").setText("男");
		studentElem1.addElement("grade").setText("计算机1班");
		studentElem1.addElement("address").setText("广州天河");
		
		//2.1 增加标签
		Element studentElem2 = rootElem.addElement("Student");
		//2.2 增加属性
		studentElem2.addAttribute("id", "2");
		//2.3 增加标签,同时设置文本
		studentElem2.addElement("name").setText("李四");
		studentElem2.addElement("gender").setText("女");
		studentElem2.addElement("grade").setText("计算机2班");
		studentElem2.addElement("address").setText("广州越秀");
		
		
		//3.只要对doc做了修改,都要做一次写出。内容写出到xml文件
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("d:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
		
	}
	
	/**
	 * 2.修改id为2的学生姓名
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception{
		//1.查询到id为2的学生
		Document doc = new SAXReader().read(new File("d:/student.xml"));
		//1.1 找到所有的Student标签
		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
		while(it.hasNext()){
			Element stuElem = it.next();//Student标签
			//1.2 查询id为id的学生标签
			if(stuElem.attributeValue("id").equals("2")){
				stuElem.element("name").setText("王丽");//覆盖式
				break;
			}
		}
	
		
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("d:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
	}
	
	/**
	 * 3.删除id为2的学生
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception{
		//1.查询到id为2的学生
		Document doc = new SAXReader().read(new File("e:/student.xml"));
		//1.1 找到所有的Student标签
		Iterator<Element> it = doc.getRootElement().elementIterator("Student");
		while(it.hasNext()){
			Element stuElem = it.next();
			//1.2 查询id为id的学生标签
			if(stuElem.attributeValue("id").equals("2")){
				//1.3 删除该学生标签
				stuElem.detach();//自杀式
				break;
			}
		}
	
		
		//3.1 输出位置
		FileOutputStream out = new FileOutputStream("e:/student.xml");
		//3.2 指定格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置编码
		format.setEncoding("utf-8");
		XMLWriter writer = new XMLWriter(out,format);
		//3.3 写出内容
		writer.write(doc);
		//3.4关闭资源
		writer.close();
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Dom4j解析XML

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源...
  • redarmy_chen
  • redarmy_chen
  • 2013年10月23日 12:06
  • 280014

Java之DOM,SAX,JDOM,DOM4J,四种解析xml方法比较

4种解析方式的比较 1.DOM解析    优点:a.形成了树结构,直观好理解,代码更易编写          b.解析过程中树结构保留在内存中,方便修改 缺点:         a.当xml...
  • qq_31028891
  • qq_31028891
  • 2016年08月13日 21:29
  • 1496

java 使用DOM4J对XML文件进行增删改查操作

源代码: DOM4j.javapackage com.zc.homeWork19;import java.io.FileWriter; import java.util.ArrayList; imp...
  • zc2274460
  • zc2274460
  • 2016年04月18日 20:37
  • 3901

dom4j 解析元素无属性和有属性的xml文件,都使用反射进行注值

dom4j 是将DOM解析和SAX解析的优点结合的一个优秀的产品. dom解析 优点:因为在内存中形成dom树,可以对dom树进行增删改查 缺点:因为在内存中形成dom树,占用内存大,不适合大文件 ...
  • qq_33491863
  • qq_33491863
  • 2017年07月29日 19:16
  • 216

dom4j解析XML文件 API

  • 2009年06月23日 15:37
  • 693KB
  • 下载

解析XML文件(二)----使用dom4j方式(三)

dom4j解析xml     dom4j和jdom都是非常优秀的xml解析工具,但现在很多人认为dom4j无论是在性能上或是灵活性上都要优于jdom,其实,作为xml的解析工具,他们在...
  • yansong_8686
  • yansong_8686
  • 2013年06月21日 10:18
  • 959

解析XML文件(二)----使用dom4j方式(一)

针对之前写过的一种解析XML文件的方式 解析XML文件(一)----使用XStream方式 . 现在尝试用第二种常用的方式进行解析XML文件,便于对比学习! 顺便分享下网友总结的这个篇文章 do...
  • yansong_8686
  • yansong_8686
  • 2013年06月21日 09:20
  • 588

使用DOM4j解析XML文件

  • 2011年12月17日 16:36
  • 6KB
  • 下载

使用dom4j把XML文件解析成JavaBean

使用dom4j把XML文件解析成JavaBean前言:下面是我需要解析的XML文件 0x01 LKJ2000...
  • u013165487
  • u013165487
  • 2015年08月03日 11:34
  • 1329

使用DOM4J解析大容量XML文件

dom4j本身提供了两种解析xml的方式:dom解析和sax解析。关于dom解析和sax解析各自的优缺点这里不再多述,只强调的一点是由于越来越多的应用会遇到大数据场景,SAX解析方式刚好是解决此类场景...
  • Mark_LQ
  • Mark_LQ
  • 2015年04月14日 13:19
  • 2819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xml解析之使用dom4j的api对xml文件进行CRUD(二)
举报原因:
原因补充:

(最多只允许输入30个字)