xml文件练习

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();
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值