xml文件的增加、删除、修改、查询
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明xml文件 --><flights>
<flight fno="CA001">
<dcity>北京</dcity>
<dtime>2019-11-11</dtime>
<acity>四川</acity>
<atime>2019-11-12</atime>
</flight>
<flignt fno="CA005">
<dcity>上海</dcity>
<dtime>2015-10-25</dtime>
<acity>南非</acity>
<atime>2015-10-26</atime>
</flignt>
</flights>
代码
package cn.kgc.tangcco.dom4j.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class TestDemo2 {
// 声明document文档
Document document;
// 加载flight3.xml文件
public void load() {
// 创建解析器
SAXReader saxReader = new SAXReader();
try {
// 解析flight3.xml文件,加载进document文档中
document = saxReader.read(new File("src/cn/kgc/tangcco/dom4j/file/flight3.xml"));
} catch (DocumentException e) {
e.printStackTrace();
}
}
// 显示文件
public void showInfo() {
// 获取根元素
Element root = document.getRootElement();
System.out.println(root.getName());
// 获取根元素下面的子元素集合
List<Element> eList = root.elements();
// 遍历集合,分层输出
for (Element element : eList) {
System.out.println("\t" + element.getName());
Attribute att = element.attribute("fno");
System.out.println("\t\t" + att.getName() + "=" + att.getValue());
List<Element> elelist = element.elements();
for (Element element2 : elelist) {
System.out.println("\t\t" + element2.getName() + "=" + element2.getText());
}
}
}
// 增加航班
public void add() {
// 获取根元素
Element root = document.getRootElement();
// 增加航班元素
Element element = root.addElement("flight");
// 增加航班编号(属性)
element.addAttribute("fno", "CZ004");
// 增加起飞城市、起飞时间、到达城市、到达时间(元素)
Element element2 = element.addElement("dcity");
element2.setText("沈阳");
Element element3 = element.addElement("dtime");
element3.setText("2019-05-21");
Element element4 = element.addElement("acity");
element4.setText("昆明");
Element element5 = element.addElement("atime");
element5.setText("2019-05-22");
}
// 删除航班
public void del() {
// 获取根元素
Element root = document.getRootElement();
// 获取根元素下面的子元素集合
List<Element> list = root.elements();
// 遍历集合
for (Element element : list) {
String fno = element.attribute("fno").getValue();
// 判断编号为"CA001"的航班是否存在,如果存在,删除该航班
if (fno.equals("CA001")) {
root.remove(element);
}
}
}
// 修改航班
public void modification() {
// 获取根元素
Element root = document.getRootElement();
// 获取根元素下面的子元素集合
List<Element> list = root.elements();
// 遍历集合
for (Element element : list) {
Attribute fno = element.attribute("fno");
// 判断编号为"CZ004"的航班是否存在,如果存在,修改其航班编号、起飞城市、起飞时间
if (fno.getValue().equals("CZ004")) {
fno.setValue("CZ111");
element.element("dcity").setText("长春");
element.element("dtime").setText("2019-05-22");
}
}
}
// 保存文件
public void save() {
// 创建文件输出流,输出格式
OutputStream out=null;
XMLWriter xmlWriter = null;
try {
out = new FileOutputStream("src/cn/kgc/tangcco/dom4j/file/flight3.xml");
OutputFormat format = new OutputFormat();
xmlWriter = new XMLWriter(out, format);
// 写入xml文件
xmlWriter.write(document);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 测试
@Test
public void test() {
load();
// add();
// del();
modification();
save();
showInfo();
}
}