Java从零开始学四十三(DOM4j解析XML)
一、创建XML
// 建立XML
public static void gernatorXML() {
// 创建Document对象
Document doc = DocumentHelper.createDocument();
// 创建根节点students
Element studentsElement = doc.addElement("students");
// 创建子节点student
Element studentElement1 = studentsElement.addElement("student");
// 添加ID属性
studentElement1.addAttribute("id", "1001");
// 添加子节点
studentElement1.addElement("name").setText("张三");
studentElement1.addElement("age").setText("18");
studentElement1.addElement("sex").setText("男");
studentElement1.addElement("phone").setText("13800138000");
studentElement1.addElement("address").setText("深圳宝安"); // 再创建同样的2个student节点
Element studentElement2 = studentsElement.addElement("student");
// 添加ID属性
studentElement2.addAttribute("id", "10012");
// 添加子节点
studentElement2.addElement("name").setText("李四");
studentElement2.addElement("age").setText("19");
studentElement2.addElement("sex").setText("女");
studentElement2.addElement("phone").setText("13412369854");
studentElement2.addElement("address").setText("上海");
// 再创建同样的2个student节点
Element studentElement3 = studentsElement.addElement("student");
// 添加ID属性
studentElement3.addAttribute("id", "10013");
// 添加子节点
studentElement3.addElement("name").setText("王五");
studentElement3.addElement("age").setText("25");
studentElement3.addElement("sex").setText("女");
studentElement3.addElement("phone").setText("13410110104");
studentElement3.addElement("address").setText("广东"); try {
// 创建XML 将Document写入XML
// 设置格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置字符编码也可以设置为gb2312或者gbk
format.setEncoding("utf-8");
// 输入
XMLWriter writer = new XMLWriter(
new FileWriter("xml/students.xml"), format); // 写入文档
writer.write(doc);
// 关闭流
writer.close();
// 输出提示
System.out.println("======写入成功=======");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二、解析XML
// 读取XML
public static void getXML() { try {
// 读取XML
SAXReader reader = new SAXReader();
Document doc = reader.read("xml/students.xml");
// 获取根节点
Element root = doc.getRootElement();
// 获取子节点集合
List<Element> stulList = root.elements();
// 遍历
for (Element ele : stulList) {
// 获取属性
String id = ele.attributeValue("id");
System.out.println("学生ID: " + id);
// 获取子节点的文本内容 name
String name = ele.elementText("name");
// age年龄
String age = ele.elementText("age");
// sex
String sex = ele.elementTextTrim("sex");
// phone
String phone = ele.elementTextTrim("phone");
// address
String address = ele.elementTextTrim("address");
System.out.println("姓名:" + name + "\t年龄: " + age + "\t 性别: "
+ sex + "\t\t电话:" + phone + "\t\t地址: " + address);
} } catch (DocumentException e) {
e.printStackTrace();
} }
三、增加节点
//增加新的节点
public static void addXML(){ try {
//读取XML创建解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//创建新的节点
Element student=root.addElement("student");
//添加属性
student.addAttribute("id", "10020");
//创建子节点
student.addElement("name").setText("张三丰");
student.addElement("age").setText("108");
student.addElement("sex").setText("男");
student.addElement("phone").setText("13800138001");
student.addElement("address").setText("武当山");
//写入XML
//设置字符编码和格式
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
//创建输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//写入Document
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("======增加成功======="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
四、修改节点
//修改节点内容根据 id10013将王五的姓名=王小五,年龄30,性别:男,电话:138000138000,地址:北京
public static void modify(){ try {
//创建SAXReader解析器
SAXReader reader=new SAXReader();
//创建Document
Document doc=reader.read("xml/students.xml");
//找到根节点
Element root=doc.getRootElement();
//子节点集合
List<Element> studentList=root.elements();
//遍历查找
for (Element ele : studentList) { if(ele.attributeValue("id").equals("10013")){
ele.element("name").setText("王小五");
ele.element("age").setText("30");
ele.element("sex").setText("男");
ele.element("phone").setText("138000138000");
ele.element("address").setText("北京"); }
}
//写入XML
//设置字符格式和编码
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//将Document写入
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("====修改成功===="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
五、删除节点XML
/删除节点 删除王小五的节点
public static void delete(){ try {
//创建SAXReader 解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//集合
List<Element> stuList=root.elements();
//遍历
for (Element ele : stuList) {
if(ele.attributeValue("id").equals("10013")){
//获取父节点,并删除这个节点
ele.getParent().remove(ele);
}
}
//写入XML
//设置字符编码格式
OutputFormat format =new OutputFormat();
format.setEncoding("utf-8");
//输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
writer.write(doc);
writer.close();
System.out.println("===删除成功==="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Java从零开始学四十三(DOM4j解析XML)的更多相关文章
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- 在java项目中怎样利用Dom4j解析XML文件获取数据
在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- Java从零开始学四十五(Socket编程基础)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- Java从零开始学三十三(JAVA IO- File类)
一.简述 在整个io包中,唯一表示与文件本身有关的类就是File类.使用File类可以进行创建或删除文件等常用操作.要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示: ...
- Java从零开始学四十七(注解简述)
一.Java中注解Annotation 什么是注解:用来描述数据的数据(元数据). Java代码里的特殊标记.它为代码中添加用Java程序无法表达的额外信息提供一种形式化的方法,使用我们可以在未来的某 ...
- Java从零开始学四十四(多线程)
一.进程与线程 1.1.进程 进程是应用程序的执行实例. 进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.发展到最终消亡的过程 特征: 动态 ...
- Java从零开始学四十一(反射简述二)
一.实例化Class类对象 实例化Class类对象的方法有三种: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() 二.Class类的常用方法 No. 方 ...
- Java从零开始学四十(反射简述一)
一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...
随机推荐
- 手把手教你搭建LyncServer2013之部署及配置监控功能(十八)
自弃用监控服务器角色以来,已对 Microsoft Lync Server 2013 监控基础结构进行了重大更改.不再采用不同的监控服务器角色(通常需要组织设置专用计算机来充当监控服务器),现在监控服 ...
- 疯狂的ASP.NET系列-第一篇:啥是ASP.NET
最近想学下ASP.NET,于是在网店上看到一本书叫做ASP.NET高级程序设计,老婆在旁边问了句:“这个不是DSP(数字信号处理,大学读的电子,所以这个比较熟),是ASP啊,什么是ASP啊?”.我想了 ...
- Java --计算百分比
Learn From: http://blog.csdn.net/maggiehexu/article/details/6387636 方法一: public String getPercent(in ...
- Errors running builder 'JavaScript Validator' on project
builders去掉JavaScript Validator. 如图: 参考文献: [1]http://www.cnblogs.com/enshrineZither/p/4062248.html
- 通过组策略实现IE自动以当前域账号登录某站点
SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录某站点 1. 在运行中运行MMC,启动“组策略对象编辑器”. 如下图: 2.找到组策略,如下图: 3.找到对应的域 ...
- Python - 多版本共存与虚拟独立环境
背景 利用pip直接在本地python环境安装包,基本上都安装到了site_package目录下面. 随着安装的包越来越多,依赖关系也就越来越复杂.不同的项目之间,依赖关系也会出现版本冲突的问题. 此 ...
- 创意欣赏:20幅字体排版(Typography)素描
通常我们都只关注最终的作品,但其实幕后还有很多的过程,其中一个是素描.素描用来表达最初思想观念的原型.有时客户需要一个独特的品牌新LOGO或字体,这时先绘制在纸上是比较方便的,之后扫描到 Photos ...
- ActiveMQ学习(二)——MQ的工作原理
如图所示 首先来看本地通讯的情况,应用程序A和应用程序B运行于同一系统A,它们之间可以借助消息队列技术进行彼此的通讯:应用程序A向队列1发送一条信息,而当应用程序B需要时就可以得到该信息. 其次是远程 ...
- 什么是https?
很久之前注意到了https这个新出来的协议,当时感觉到只是一个加密的协议,然后没有什么关注,只知道他和http的区别就在于加密,最近突然很多人问起了这个https到底是什么?于是上网查了查资料,总结之 ...
- mysqlbinlog -v --base64-output 与不加的区别
加-v与加-vv的区别: 加--base64-output=DECODE-ROWS与不加的区别: