当前位置:网站首页>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>
边栏推荐
- [redis] redis persistent RDB vs AOF (source code)
- 【Rust 笔记】12-闭包
- 【Rust 笔记】11-实用特型
- Golang 时间格式整理
- Markdown learning
- 【Rust 笔记】10-操作符重载
- Pit & ADB wireless debugging of vivo real machine debugging
- [K & R] Chinese Second Edition personal questions Chapter1
- 796 · 开锁
- Jupyter remote server configuration and server startup
猜你喜欢

简易入手《SOM神经网络》的本质与原理
![[concurrent programming] consistency hash](/img/5e/3d0a52caa8ca489a6e6267274bbb39.jpg)
[concurrent programming] consistency hash

Animation_ IK overview

Advanced OSG collision detection

【Rust笔记】02-所有权

Kwai 20200412 recruitment

Installation of PHP FPM software +openresty cache construction

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

ArrayList
随机推荐
Osgconv tool usage
Introduction to hexadecimal coding
Sequence of map implementation classes
Message queue for interprocess communication
php-fpm软件的安装+openresty高速缓存搭建
Campus lost and found platform based on SSM, source code, database script, project import and operation video tutorial, Thesis Writing Tutorial
ArrayList
Advanced OSG collision detection
Talking about: is the HashSet set ordered or disordered /hashset set unique, why can we store elements with the same content
Gradle's method of dynamically modifying APK package name
Unity Editor Extension - event handling
Unity editor expansion - the framework and context of unity imgui
[rust notes] 06 package and module
Unity notes 1
Kunlunbase meetup is waiting for you!
简易入手《SOM神经网络》的本质与原理
Notes on understanding applets 2022/7/3
Go resolve ID card
Unity interactive water ripple post-treatment
[rust notes] 09- special types and generics