博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dom4j及案例
阅读量:6000 次
发布时间:2019-06-20

本文共 5259 字,大约阅读时间需要 17 分钟。

dom4j是一个组织,针对xml解析,提供解析器dom4j

             步骤

1、导入dom4j的jar包

创建文件夹lib,复制jar包到lib下面,右键点击jar:build path-add to buildpath

2、得到document

  SAXReader reader = new SAXReader();

  Document d = reader.read(url);

document里面的方法:getRootElement():获取根节点,返回Element

Element接口里面的方法:getParent()、addElement()

         1、使用dom4j查询xml

 查询所有name元素里面的值

a、创建解析器  SAXReader reader = new SAXReader()

b、得到document  Document d = reader.read(url)

c、得到根节点  getRootElement(),返回Element

d、得到p1标签

  elements(“p1”):获取每个标签下面的第一个首标签,返回list集合

 遍历list得到每一个p1

e、得到name   执行element(qname):获取标签下面的第一个子标签,返回Element

f、获取name元素里面的值  getText

g、打印出f步骤

   2、使用dom4j创建节点

a、创建解析器

b、得到docuemtn

c、得到根节点

d、得到第一个p1  使用element方法

e、在p1下面添加元素  addElement(“标签名称”),返回Element

f、添加文本  setText(“文本内容”)

g、回写xml   XMLWriter xml = new XMLWriter(OutputStrem,OutputFormat)

  OutputStrem :xml文件路径:new FileOutPutStream(“文件路径”)

  OutputFormat格式化的值,使用createPretttyPrint方法

h、把文件添加进XMLWriter  write

i、关闭XMLWriter  close

   3、在指定位置添加节点

a、创建解析器

b、得到docuemtn

c、得到根节点

d、得到第一个p1  使用element方法

e、获取p1下面的所有元素  elements方法,返回list集合,使用list的方法,在指定位置添加元素  add(int index,E element)

f、创建要添加的元素  documentHelper.createElement

g、创建文本

h、回写xml 

i、把文件添加进XMLWriter 

l、关闭XMLWriter 

 

  对得到document的操作和回写xml的操作,封装成方法;把传递的文件路径封装成一个常量

好处:提高开发速度,可以提高代码可维护性

 

     4、修改节点的值

a、得到document

b、得到根节点,然后得到第一个p1标签

c、得到p1下面的标签

d、修改标签的值      setText

e、回写xml

   5、删除节点

a、得到document

b、得到根节点

c、得到第一个p1标签

d、得到p1标签下面的标签

e、使用p1标签删除d  remove

f、回写xml

  6、使用dom4j获取属性的操作

a、得到document

b、得到根节点

c、得到第一个p1标签

d、得到p1里面的属性值  attributeValue

  

package cn.idcast1;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import cn.idcast2.Dom4jUtils;public class Dom4jTest {	public static void main(String[] args) throws Exception {		// selectAll();		// selectFirst();		// selectSecond();		// add();		// addschool();		// modify();		// remove();		getValue();	}	// 获取属性值的操作	public static void getValue() {		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);		Element root = d.getRootElement();		Element p1 = root.element("p1");		String s = p1.attributeValue("id");		System.out.println(s);	}	// 删除节点	public static void remove() {		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);		Element root = d.getRootElement();		Element p1 = root.element("p1");		Element sch = p1.element("school");		p1.remove(sch);		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);	}	// 修改节点的值	public static void modify() {		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);		Element root = d.getRootElement();		Element p1 = root.element("p1");		Element name1 = p1.element("name");		name1.setText("张三");		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);	}	// 在指定位置添加节点	public static void addschool() throws Exception {		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);		Element root = d.getRootElement();		Element p1 = root.element("p1");		List
list = p1.elements(); Element school = DocumentHelper.createElement("school"); school.setText("jinshan"); list.add(1, school); Dom4jUtils.xmlwriters(Dom4jUtils.URL, d); } // 创建节点 public static void add() throws Exception { Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL); Element root = d.getRootElement(); Element p1 = root.element("p1"); Element sex = p1.addElement("sex"); sex.setText("nv"); Dom4jUtils.xmlwriters(Dom4jUtils.URL, d); } // 得到第二个name元素里面的值 因为element方法表示的是得到第一个标签的值 public static void selectSecond() throws Exception { Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL); Element root1 = d.getRootElement(); List
list = root1.elements("p1"); Element index = list.get(1); Element name1 = index.element("name"); String s = name1.getText(); System.out.println(s); } // 得到第一个name元素里面的值 public static void selectFirst() throws Exception { Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL); Element root1 = d.getRootElement(); Element p1 = root1.element("p1"); Element name1 = p1.element("name"); String s = name1.getText(); System.out.println(s); } // 得到所有的name元素里面的值 public static void selectAll() throws Exception { Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL); Element e = d.getRootElement(); List
l = e.elements(); for (Element element : l) { Element e2 = element.element("name"); String s = e2.getText(); System.out.println(s); } }}

  封装方法

package cn.idcast2;import java.io.FileOutputStream;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class Dom4jUtils {	// 封装文件的地址,因为是常量,所有URL要大写	public static final String URL = "src/2.xml";	// 封装文件,返回Document	public static Document getDocuments(String url) {		try {			SAXReader sax = new SAXReader();			Document d = sax.read(url);			return d;		} catch (DocumentException e) {			e.printStackTrace();		}		return null;	}	// 封装回写的xml	public static void xmlwriters(String url, Document d) {		try {			XMLWriter xmlw = new XMLWriter(new FileOutputStream(url),					OutputFormat.createPrettyPrint());			xmlw.write(d);			xmlw.close();		} catch (Exception e) {			e.printStackTrace();		}	}}

  

转载于:https://www.cnblogs.com/zengjiao/p/7225671.html

你可能感兴趣的文章
go常用辅助工具
查看>>
BeetlSQL 2.11.2 发布,Java Dao 工具
查看>>
为什么我的电脑可以用win10却用不了win7?
查看>>
WPF实现滚动显示的TextBlock
查看>>
Robot Framework之数据类型及变量运算
查看>>
(十二)Java springcloud B2B2C o2o多用户商城 springcloud架构-- SSO单点登录之OAuth2.0 登出流程(3)...
查看>>
WPF MVVM 架构 Step By Step(3)(把后台代码移到一个类中)
查看>>
从PRISM开始学WPF(六)MVVM(二)Command?
查看>>
2018广州云栖大会游戏云专场:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务...
查看>>
2017上海QCon之旅总结(下)
查看>>
Chartjs:Line chart的使用及必要参数说明
查看>>
E-MapReduce助力建设企业级数据仓库
查看>>
从服务端视角看高并发难题
查看>>
keras 实现 GAN
查看>>
我必须得告诉你的MySQL优化原理3
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
ASP.NET Core 2 学习笔记(六)MVC
查看>>
基于深度前馈序列记忆网络,如何将语音合成速度提升四倍?
查看>>
Spring+ Spring cloud + SSO单点登录应用认证
查看>>
在SQL service或Oracle中将数字转换成有千位符号
查看>>