在使用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();
}
}

xml解析之使用dom4j的api对xml文件进行CRUD(二)的更多相关文章

  1. android学习日记23--Android XML解析

    一.简述 XML语言是跨平台,JAVA对XML语言支持得比较好,android系统的应用层平台是JAVA做的,所以用XML.XML解析比较简单.XML解析就是将获取到的数据分离出来,基本的网络数据传输 ...

  2. 基于Woodstox的StAX 2 (Streaming API for XML)解析XML

    StAX (Streaming API for XML)面向流的拉式解析XML,速度快.占用资源少,非常合适处理大数据量的xml文件. 详细教程和说明可以参见以下几篇文章: 使用 StAX 解析 XM ...

  3. DOM4J -(XML解析包)

    DOM4J - 简介 是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM, ...

  4. XML解析技术研究(一)

      摘要:XML作为过去十年中出现的最流行的技术之一,得到了广泛的应用,而其中XML解析技术是XML应用的关键.本文介绍了XML解析技术的研究动向,分析和比较了4种XML解析技术的优劣,并归纳总结了应 ...

  5. xml解析方式之JAXP解析入门

    XML解析 1 引入 xml文件除了给开发者看,更多的情况使用[程序读取xml文件]的内容.这叫做xml解析 2 XML解析方式(原理不同) DOM解析 SAX解析 3 XML解析工具 DOM解析原理 ...

  6. XML解析技术简介——(一)

  7. xml解析之stax

    博文引自:http://zangweiren.iteye.com/blog/647334 Java 6.0对XML支持的新特性有许多方面.比如StAX.针对XML-Web服务的Java架构(JAX-W ...

  8. 【Android】实现XML解析的几种技术

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  9. iOS-数据解析XML解析的多种平台介绍

    在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...

随机推荐

  1. @RequestBody和@ModelAttribute注解

    一 .@RequestBody @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify( ...

  2. Modern Algebra 读书笔记

    Modern Algebra 读书笔记 Introduction 本文是Introduction to Modern Algebra(David Joyce, Clark University)的读书 ...

  3. sqlserver 取日期年份月份

    select convert(varchar(10),datepart(YYYY,a.fssj)) as years,--得到年份convert(varchar(10),datepart(mm,a.f ...

  4. jquery easyui panel title文字格式设置

    $('#txtLeftPercent').panel({ title: '剩余权重:' + '<b style="color:red">' + 100 + '%< ...

  5. P20 旅行助手,从未有过的至尊私人导游服务!

    旅行可以让人暂时抛掉生活中的琐事,工作上的压力,寻找内心的宁静.有的人是为了想多去见识不同的事物和人文风情,有的人是想去感受大自然的馈赠,看历史古迹感受古人智慧.歌德说过:人之所以爱旅行,不是为了抵达 ...

  6. mybatis choose标签的使用

    MyBatis 提供了 choose 元素.if标签是与(and)的关系,而 choose 是或(or)的关系. choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立 ...

  7. Tomcat出现validateJarFile-jar not loaded问题

    tomcat启动时问题: validateJarFile(...\WEB-INF\lib\servlet-api.jar)-jar not loaded. See Servlet Spec 2.3, ...

  8. Dubbo介绍和服务架构分析

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成.使用zookeeper作为服务的注册中心,对外提供服务 ...

  9. 【事务】<查询不到同一调用方法其它事务提交的更新>解决方案

    最近遇到一个很棘手的问题,至今也解释不清楚原因,不过已经找到了解决方案. 先来看看Propagation属性的值含义,@Transactional中Propagation属性有7个选项可供选择: Pr ...

  10. ngx.re.match使用示例

    s='...12ab345cde...' r, e = ngx.re.match(s,'(\\d+)([a-z]+)(?<num>\\d+)(?<word>[a-z]+)') ...