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它却有着一个非常突出的动态相关机制:反 ...
随机推荐
- 爆料喽!!!开源日志库Logger的使用秘籍
日志对于开发来说是非常重要的,不管是调试数据查看.bug问题追踪定位.数据信息收集统计,日常工作运行维护等等,都大量的使用到.今天介绍著名开源日志库Logger的使用,库的地址:https://git ...
- Lua中的weak表——weak table
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak ref ...
- java 去掉html标签
使用正则表达式删除HTML标签. import java.util.regex.Matcher; import java.util.regex.Pattern; public class HTMLSp ...
- Android自定义之TextView跑马灯的监听
TextView都有跑马灯的效果,如果说让你去监听跑马灯效果的执行,我觉得这个需求有点二了,但是也要实现. 思路: 1.自定义View 继承TextView 这种方法过于麻烦,只是监听一个跑马灯 ...
- DDD:订单管理 之 如何组织代码
背景 系统开发最难的是职责的合理分配,或者叫:“如何合理的组织代码”,今天说一个关于这方面问题的示例,希望大家多批评. 示例背景 参考数据字典 需求 OrderCode必须唯一. Total = Su ...
- HMM 自学教程(二)生成模型
本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...
- 记第二次使用php开发项目之绝不重复自己
严格说起来,自己并非一个合格的php程序员.第一次使用php开发,不过是因为游戏上线,需要一个统计管理后台和GM后台,因为招聘已经来不及,所以我就上前线了! 凭着对php语法的一点点记忆(大学的时候学 ...
- Scrum1.2--spring计划
项目功能--深入分析 燃尽图
- Sprint回顾
1.回顾组织 主题:“我们下次怎么样才能更加认真对待?” 时间:设定为1至2个小时. 参与者:整个团队. 场所:能够在不受干扰的情况下讨论. 秘书:指定某人当秘书,筹备.记录.整理. 2.回顾流程 ...
- 转贴:JavaScript实现Ajax请求简单示例
转至:https://my.oschina.net/u/658145/blog/167651 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 ...