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它却有着一个非常突出的动态相关机制:反 ...
随机推荐
- 《Programming with Objective-C》
苹果官方文档:不稳定的传送门 读书笔记共有以下几篇,其他的知识点不重要或者已经熟悉不需记录 <Programming with Objective-C>第三章 Working with O ...
- window.location 对象所包含的属性
window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostname 当前 URL 的主机名 hre ...
- Teambition可用性测试记
引言:最开始知道Teambition是几个月前,当时是想找一个团队协作工具.Teambition是候选之一,它的界面设计给我留下了印象.后来得知其背后年轻的创始团队还是让我有些小惊讶的.这次通过朋友介 ...
- 2 Servlet基础
作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) 1. 从浏览器访问Servlet的流程 刚才发现,这里的图片不能正常显示,所以我给个链接,大家可以下载下来看从浏 ...
- 最近一段时间开发客户端app的感悟
关于android和cocos2d 凭着对大学时候写html+css的一点点的记忆,我还是认为android的布局xml文件还是参考了html+css,只是他更加臃肿!就想 android平台本身那样 ...
- ASP.NET WebForm与MVC优缺点
发表于我的个人网站中,请点击阅读!
- BZOJ1003 物流运输 最短路+DP
1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...
- Mysql中的各种timeout
在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?本期Out-man,讲述咱们MySQL DBA自己的Ti ...
- 循序渐进开发WinForm项目(2)--项目代码的分析
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- 利用Aspose.Cell控件导入Excel非强类型的数据
导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...