DOM4J 实现对XML文档的增、删、改、查
来源:互联网 发布:windows 10 周年更新 编辑:程序博客网 时间:2024/06/07 22:19
前言:首先谈一个小故事:当年Java准备做对XML的解析时,对解析器的实现方向在内部发生了争执,后来高层没有听从工程师建议,坚持开发出了JDOM,而主要的工程师选择离开Java 按照自己的方式实现,就是DOM4J 。后来结果表明,DOM4J 完胜了JDOM。下面,让我们来了解一下通过DOM4J 实现对XML文件进行增删改查的过程。
1、待解析的XML文件:
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.itcast.cn/xml"xsi:schemaLocation="http://www.itcast.cn/xml students.xsd"><student number="ITCAST_1001"> <name>zhangSan</name> <age>23</age> <sex>male</sex></student></students></span>
2、用DOM4J实现增删改查:
<span style="font-size:14px;">public class Demo3 {@Testpublic void method1() throws Exception {// 创建解析器SAXReader reader = new SAXReader();//这个是用来读取文件内容的Document doc = reader.read(new File("students.xml")); //指定要读取的文件//System.out.println(doc.asXML()); //打印出文件}//实现对XML文件的复制@Testpublic void method2() throws Exception {// 得到DocumentSAXReader reader = new SAXReader();Document doc = reader.read(new File("students.xml"));// 保存Document,指定将写入的目的文件(复制功能)XMLWriter writer = new XMLWriter(new FileOutputStream("students_copy.xml"));writer.write(doc); //开始写入}//遍历Document@Testpublic void method3() throws Exception {// 要遍历文档,首先要得到Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("students.xml"));//获取根元素Element root = doc.getRootElement();//获取根元素中所有student元素List<Element> stuEleList = root.elements("student");// 循环遍历所有学生元素for(Element stuEle : stuEleList) {//获取学生元素的numberString number = stuEle.attributeValue("number");//获取学生元素名为name的子元素的文本内容String name = stuEle.elementText("name");//获取学生元素名为age的子元素的文本内容String age = stuEle.elementText("age");//获取学生元素名为sex的子元素的文本内容String sex = stuEle.elementText("sex");System.out.println(number + ", " + name + ", " + age + ", " + sex);}}//添加元素@Testpublic void method4() throws Exception {// 得到DocumentSAXReader reader = new SAXReader();Document doc = reader.read(new File("src/students.xml"));//获取root元素Element root = doc.getRootElement();Element stuEle = root.addElement("student"); //添加了student元素// 给stuEle添加属性,名为number,值为1003stuEle.addAttribute("number", "1003"); // 分别为stuEle添加名为name、age、sex的子元素,并为子元素设置文本内容stuEle.addElement("name").setText("wangWu");stuEle.addElement("age").setText("18");stuEle.addElement("sex").setText("male");// 设置保存的格式化器 1. \t,使用什么来完成缩进 2. true, 是否要添加换行OutputFormat format = new OutputFormat("\t", true);format.setTrimText(true); //去掉空白// 在创建Writer时,指定格式化器XMLWriter writer = new XMLWriter(new FileOutputStream("src/students_copy.xml"), format);writer.write(doc);}//修改元素@Testpublic void method5() throws Exception {// 得到DocumentSAXReader reader = new SAXReader();Document doc = reader.read(new File("src/students_copy.xml"));//使用XPath找到符合条件的元素// 查询student元素,条件是number属性的值为1003Element stuEle = (Element) doc.selectSingleNode("//student[@number='ITCAST_1003']");//修改stuEle的age子元素内容为81stuEle.element("age").setText("81");//修改stuEle的sex子元素的内容为femalestuEle.element("sex").setText("female");}//删除元素@Testpublic void method6() throws Exception {// 得到DocumentSAXReader reader = new SAXReader();Document doc = reader.read(new File("src/students_copy.xml"));// 查找student元素,条件是name子元素的文本内容为wangWuElement stuEle = (Element) doc.selectSingleNode("//student[name='wangWu']");// 2. 获取父元素,使用父元素删除指定子元素stuEle.getParent().remove(stuEle);}} </span>小结:DOM4J无论在那个方面都是非常出色的。如今越来越多的Java软件在使用DOM4J来读写XML,例如Hibernate,包括sun公司自己的JAXM也用了DOM4J。
4 0
- DOM4J 实现对XML文档的增、删、改、查
- Dom4j对XML文档的增删改查操作
- XML之------dom4j对XML文档增删改查
- 使用dom4j对xml文件进行增、删、改、查
- 使用dom4j工具包实现对xml文件的增删改查和乱码问题的处理
- Dom4j对xml增删改查的实例详解
- XML学习---利用Java对XML文档的增、删、改、查
- Dom4j 对XML增删改查
- DOM4J对XML文档的读写增删改等
- DOM4J对XML文档的读写增删改等
- DOM4J对XML文档的读写增删改等
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查
- DOM4J的使用(DOM4J对XML的解析即增删改查)
- dom4J的增、删、改、查操作
- DOM对XML文档的增删改查
- DOM方式对xml文档的增删改查
- java字符串
- leetcodeMove Zeroes
- Find Minimum in Rotated Sorted Array
- RequireJS笔记
- 浅谈Linux发行版的选择
- DOM4J 实现对XML文档的增、删、改、查
- 经济观察报访李小文对话(很有趣!更发人深思)
- 蓝桥杯 算法训练 集合运算
- Redhat6.6 图形化安装 oracle12c
- Mina是什么
- 图像编程-彩色图像灰度化
- 【随笔】聊一聊服务器的那些事儿
- leetcode 1 Two Sum
- SVN的Trunk、Branch和Tag(一)