一、XML简介
xml是Extensible Markup Language的缩写,即可扩展标记语言,是一种简单的存储语言,使用一系列简单的标记来描述结构化数据
特点:
- XML与操作系统、编程语言的开发平台都无关
- 规范统一,实现不同系统之间的数据交互
XML文档结构
- XML声明
- 标签
- 元素
- 根元素
- 属性
- XML中特殊字符的处理
- XML中的注释
- 格式良好的文档
XML的应用场景主要体现在以下几点:
- 数据存储
- 数据交换
- 数据配置
二、解析XML概述
1.DOM
DOM是基于XML的树结构来完成结构解析的。
2.SAX
SAX是基于事件的解析,它是为了解决DOM解析的资源消耗而出现的。
3.JDOM
JDOM是针对Java的特定文档模型,它简化了与XML的互交并且比使用DOM更快。
4.DOM4J
DOM4J是一个非常优秀的Java XML API具有性能优异功能强大和易用的特点,同事它是一个开源库。
使用DOM解析XML时主要使用以下对象:
- Node对象
- NodeList对象
- Document对象
- Element对象
使用DOM4J操作XML数据
1.读取XML文件,获取Document对象
- 使用SAXReader:首先,需要创建一个
SAXReader
对象,然后使用其read
方法读取XML文件,从而获得代表整个XML文档的Document
对象。这一步是后续操作的基础。
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml")); // 假设input.xml是你要读取的XML文件名
2.获取根节点
- 通过Document对象:获取到
Document
对象后,可以通过调用其getRootElement
方法来获取XML文档的根节点。
Element root = document.getRootElement();
3.遍历XML节点
- 遍历子节点:可以通过根节点或任意其他节点调用
elements
或elementIterator
方法来获取其子节点的列表或迭代器,进而遍历这些子节点。
List<Element> elements = root.elements(); // 获取所有直接子节点
for (Element element : elements) {
// 处理每个子节点
}
// 或者使用迭代器
for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
Element element = it.next();
// 处理每个子节点
}
4.读取和修改节点数据
- 读取节点文本:通过调用节点的
getText
方法来获取节点的文本内容。
String text = element.getText();
- 修改节点文本:可以直接设置节点的文本内容。
element.setText("新的文本内容");
- 添加子节点:在指定节点下添加新的子节点。
Element newChild = element.addElement("newNodeName");
newChild.setText("新节点的文本");
- 删除节点:通过父节点调用
remove
方法删除指定的子节点。
parent.remove(child); // child是要删除的节点,parent是其父节点