Java-Xml【DOM4J 实现对XML文档的增、删、改、查】
虽说是介绍基本操作,但是对XML的使用最多的就是增删改查,本文内容也是实际工作中常用到的方法。
下面是待解析的Xml文件内容:
zhangSan
23
male
【Java-Xml【DOM4J 实现对XML文档的增、删、改、查】】接着介绍如何使用dom4j实现对XML的操作:
public class Demo3 { @Test
public void method1() throws Exception {
// 创建解析器
SAXReader reader = new SAXReader();
//这个是用来读取文件内容的
Document doc = reader.read(new File("students.xml"));
//指定要读取的文件
//System.out.println(doc.asXML());
//打印出文件
}
//实现对XML文件的复制
@Test
public void method2() throws Exception {
// 得到Document
SAXReader 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
@Test
public void method3() throws Exception {
// 要遍历文档,首先要得到Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("students.xml"));
//获取根元素
Element root = doc.getRootElement();
//获取根元素中所有student元素
List stuEleList = root.elements("student");
// 循环遍历所有学生元素
for(Element stuEle : stuEleList) {
//获取学生元素的number
String 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);
}
}
//添加元素
@Test
public void method4() throws Exception {
// 得到Document
SAXReader 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,值为1003
stuEle.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);
}
//修改元素
@Test
public void method5() throws Exception {// 得到Document
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/students_copy.xml"));
//使用XPath找到符合条件的元素
// 查询student元素,条件是number属性的值为1003
Element stuEle = (Element) doc.selectSingleNode("//student[@number='ITCAST_1003']");
//修改stuEle的age子元素内容为81
stuEle.element("age").setText("81");
//修改stuEle的sex子元素的内容为female
stuEle.element("sex").setText("female");
}
//删除元素
@Test
public void method6() throws Exception {// 得到Document
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/students_copy.xml"));
// 查找student元素,条件是name子元素的文本内容为wangWu
Element stuEle = (Element) doc.selectSingleNode("//student[name='wangWu']");
// 2. 获取父元素,使用父元素删除指定子元素
stuEle.getParent().remove(stuEle);
}
}
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长