当前位置:网站首页>Dom4j遍历和更新XML
Dom4j遍历和更新XML
2022-07-03 08:35:00 【緈福的街口】
一、Dom4j
1、DOM文档对象模型
DOM(Document Object Model)定义了访问和操作XML文档的标准方法,DOM把XML文档作为树结构来查看,能够通过DOM树来读写所有元素。
2、Dom4j
Dom4j是一个易用的、开源的库,用于解析XML,它用于Java平台。
Dom4j将XML视为Document对象。
XML标签被Dom4j定义为Element对象。
二、Dom4j遍历XML
xml页面
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统 -->
<hr>
<employee no="3309">
<name>张三</name>
<age>31</age>
<salary>5000</salary>
<department>
<dname>行政部</dname>
<address>xx大厦-B103</address>
</department>
</employee>
<employee no="3310">
<name>李四</name>
<age>29</age>
<salary>8000</salary>
<department>
<dname>技术部</dname>
<address>xx大厦-B104</address>
</department>
</employee>
</hr>
java页面
package com.imooc.dom4j;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HrReader{
public void readXml() {
String file="d:/workplace/xml/src/hr.xml";
// SAXReader类是读取XML文件的核心类,用于将XML解析以“树”的形式保存
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
// 获取XML文档的根节点,即hr标签
Element root = document.getRootElement();
// elements方法用于获取指定的标签合集
List<Element> employees = root.elements("employee");
for(Element employee : employees) {
// element方法用于获取唯一的子节点对象
Element name = employee.element("name");
String empName = name.getText();// getText()方法用于获取标签文本
System.out.println(empName);
System.out.println(employee.elementText("age"));
System.out.println(employee.elementText("salary"));
Element department = employee.element("department");
System.out.println(department.element("dname").getText());
System.out.println(department.element("address").getText());
Attribute att = employee.attribute("no");
System.out.println(att.getText()+"\n");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
HrReader reader = new HrReader();
reader.readXml();
}
}
输出页面
三、Dom4j更新XML
java页面
package com.imooc.dom4j;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HrWriter {
public void writeXml() {
String file = "d:/workplace/xml/src/hr.xml";
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
Element employee = root.addElement("employee");
employee.addAttribute("no","3311");
Element name = employee.addElement("name");
name.setText("王五");
employee.addElement("age").setText("24");
employee.addElement("salary").setText("3600");
Element department = employee.addElement("department");
department.addElement("dname").setText("人事部");
department.addElement("address").setText("XX大厦-B205");
Writer writer = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
document.write(writer);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
HrWriter hrWriter = new HrWriter();
hrWriter.writeXml();
}
}
xml页面改变
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd"><!-- 人力资源管理系统 -->
<hr>
<employee no="3309">
<name>张三</name>
<age>31</age>
<salary>5000</salary>
<department>
<dname>行政部</dname>
<address>xx大厦-B103</address>
</department>
</employee>
<employee no="3310">
<name>李四</name>
<age>29</age>
<salary>8000</salary>
<department>
<dname>技术部</dname>
<address>xx大厦-B104</address>
</department>
</employee>
<employee no="3311">
<name>王五</name>
<age>24</age>
<salary>3600</salary>
<department>
<dname>人事部</dname>
<address>XX大厦-B205</address>
</department>
</employee>
</hr>
边栏推荐
- 梯度下降法求解BP神经网络的简单Demo
- MXone Pro自适应2.0影视模板西瓜视频主题苹果cmsV10模板
- 數據庫應用技術課程設計之商城管理系統
- 796 · 开锁
- KunlunBase MeetUP 等您来!
- Message queue for interprocess communication
- 十六进制编码简介
- matlab神經網絡所有傳遞函數(激活函數)公式詳解
- [concurrent programming] Table hopping and blocking queue
- Thymeleaf 404 reports an error: there was unexpected error (type=not found, status=404)
猜你喜欢
Un système de gestion de centre commercial pour la conception de cours de technologie d'application de base de données
[rust notes] 02 ownership
P1596 [USACO10OCT]Lake Counting S
【Rust笔记】02-所有权
Collection interface
Markdown learning
GIS实战应用案例100篇(七十八)-多规合一数据库设计及数据入库
Unity Editor Extension - drag and drop
[updating] wechat applet learning notes_ three
KunlunBase MeetUP 等您来!
随机推荐
Conversion between string and int types in golang
P1596 [USACO10OCT]Lake Counting S
【更新中】微信小程序学习笔记_3
Cesium for unreal quick start - simple scenario configuration
Display terrain database on osgearth ball
[rust notes] 05 error handling
[linear table] basic operation of bidirectional linked list specify node exchange
jupyter远程服务器配置以及服务器开机自启
redis集群系列四
php-fpm软件的安装+openresty高速缓存搭建
Osgconv tool usage
MySQL 8
animation
二进制转十进制,十进制转二进制
Animation_ IK overview
Kwai 20200412 recruitment
Vscode, idea, VIM development tool shortcut keys
Delete the last character of the string in golang
Campus lost and found platform based on SSM, source code, database script, project import and operation video tutorial, Thesis Writing Tutorial
单调栈-42. 接雨水