dom4j解析XML之【增删改查】
2015-08-03 23:02
274 查看
一、待解析的XML
二、解析程序
本人使用 dom4j-1.6.1.jar 配合单元测试进行解析测试
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE 书架 SYSTEM "book.dtd"> <书架> <书> <书名>Java就业培训教程123</书名> <特价>9.99</特价> <作者>小张</作者> <售价>39.00元</售价> </书> <书> <书名>JavaScript网页开发</书名> <作者>小祥</作者> <售价>11</售价> </书> </书架></span>
二、解析程序
本人使用 dom4j-1.6.1.jar 配合单元测试进行解析测试
<span style="font-size:14px;">package com.teng.dom4j; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; 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 org.junit.Test; public class Demo2 { //查询 @Test public void find() throws Exception{ //1、创建解析器 SAXReader reader = new SAXReader(); //2、读取文档 Document doc = reader.read("book.xml"); //3、获取文档的根节点 Element root = doc.getRootElement(); //4、获取第一个书名节点的值 String name = root.element("书").element("书名").getText(); //System.out.println(name); //5、遍历所有的<书>节点的<书名>节点 List<Element> eleList = root.elements("书"); for(Element ele : eleList){ String names = ele.element("书名").getText(); System.out.println(names); } } //增加 @Test public void add() throws Exception{ //1、创建解析器 SAXReader reader = new SAXReader(); //2、读取文档 Document doc = reader.read("book.xml"); //3、获取文档的根节点 Element root = doc.getRootElement(); //4、创建一个新节点 Element newEle = DocumentHelper.createElement("特价"); newEle.setText("9.99"); //5、将新节点,添加到相应父节点下 root.element("书").add(newEle); //6、更新XML文件 //方式一:利用Node接口提供的write方法 /*Writer writer = new OutputStreamWriter(new FileOutputStream("book.xml"),"gb2312"); doc.write(writer); writer.close();*/ //方式二:XMLWriter进行输出 OutputFormat format = OutputFormat.createCompactFormat();//输出化格式器 format.setEncoding("utf-8"); XMLWriter writer =new XMLWriter(new FileOutputStream("book.xml"),format); writer.write(doc); writer.close(); } //在指定位置添加节点 @Test public void add2() throws Exception{ //1、创建解析器 SAXReader reader = new SAXReader(); //2、读取文档 Document doc = reader.read("book.xml"); //3、获取文档的根节点 Element root = doc.getRootElement(); //4、创建一个新节点 Element newEle = DocumentHelper.createElement("特价"); newEle.setText("9.99"); //获取节点的List集合,并在第2个位置添加 List eles = root.element("书").elements();//获取<书>节点下的List集合 eles.add(1, newEle); //XMLWriter进行输出 OutputFormat format = OutputFormat.createCompactFormat();//输出化格式器 format.setEncoding("utf-8"); XMLWriter writer =new XMLWriter(new FileOutputStream("book.xml"),format); writer.write(doc); writer.close(); } //更新 @Test public void update() throws Exception{ //1、创建解析器 SAXReader reader = new SAXReader(); //2、读取文档 Document doc = reader.read("book.xml"); //3、获取文档的根节点 Element root = doc.getRootElement(); //4、获取特价节点 Element priceEle = root.element("书").element("特价"); priceEle.setText("7.7元"); //XMLWriter进行输出 OutputFormat format = OutputFormat.createCompactFormat();//输出化格式器 format.setEncoding("utf-8"); XMLWriter writer =new XMLWriter(new FileOutputStream("book.xml"),format); writer.write(doc); writer.close(); } //删除 @Test public void delete() throws Exception{ //1、创建解析器 SAXReader reader = new SAXReader(); //2、读取文档 Document doc = reader.read("book.xml"); //3、获取文档的根节点 Element root = doc.getRootElement(); //选取要删除的节点 Element priceEle = root.element("书").element("特价"); //获取该节点的父节点,并调用其remove()方法 priceEle.getParent().remove(priceEle); //XMLWriter进行输出 OutputFormat format = OutputFormat.createCompactFormat();//输出化格式器 format.setEncoding("utf-8"); XMLWriter writer =new XMLWriter(new FileOutputStream("book.xml"),format); writer.write(doc); writer.close(); } }</span>
相关文章推荐
- hibernate 3.3.2GA版的下载
- ArtTemplate的简单介绍
- 3、C语言和设计模式(之单件模式)
- 天涯论坛页面的制作
- Material Design之Snackbar
- 信道复用
- win7搭建android开发环境——离线一体化配置Eclipse+ADT+SDK
- ABP应用层——数据传输对象(DTOs)
- WEB标准
- 字典序排列的算法
- 布局篇(一)各类元素居中显示
- 看书注意到的一个css选择器小知识点(积累)
- 写给自己的逗比翻身计划
- HTML5+CSS3+jquery实现简单的音乐播放器
- 如何在spring mvc中上传图片并显示出来
- 黑马程序员----SQL约束介绍
- Linux 开关中断系列函数探究
- 我本微若凡尘,却也心向天空
- 简单理解ThreadLocal
- STC51系列ms级较精确的长延时函数