关于xml的认识
1 简介
- xml介绍:xml是可拓展的标记性语言
- xml作用
- 1、保存数据
1
2
3
4
5
6
7
8
9
10
11<!-- Student[id=1, name="张三"] xml的数据保存方法 -->
<students>
<student>
<id>1</id>
<name>张三</name>
</student>
<student>
<id>2</id>
<name>李四</name>
</student>
</students> - 2、作为项目/框架的配置文件
- 3、作为网络传输数据的格式(已淘汰,主流使用JSON)
2 语法
- 1、声明
1
2
3
4
5
<!--
version:版本号
encoding:编码
-->
- 2、标签命名规则
- 1 标签名可含有字母、数字、其他字符
- 2 不能以数字/标点符号开头
- 3 名称不能包含空格
- 3、根元素(没有父标签的元素)不能出现同名
- 4、文本区域(CDATA区)
- 告诉xml,里面的内容只是纯文本,不需要进行解析
1
<![CDATA[ 输入字符,例如'>','<',就不会进行解析,会直接显示 ]]>
3 xml解析
- xml为标记型文档,可以使用
w3c组织制定的dom技术
进行解析
3.1 dom4j解析
- (1)依赖
1
2
3
4
5
6<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
- (2)准备xml文件
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 解析数据 -->
<books>
<book id="1">
<name>java入门</name>
<price>99</price>
</book>
<book id="2">
<name>javaweb</name>
<price>50</price>
</book>
</books>
- (3)准备实体类
1
2
3
4
5
6
7
8
9// 使用了lombok注解
public class Book {
private int id;
private String name;
private BigDecimal price;
}
- (4)运行解析案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void parseTest() throws Exception{
// 1 创建SAXReader输入流,取出xml文件,从而生成Document对象(SAX:Simple Analysis for XML)
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("./src/main/resources/xml/sample.xml");
// 2 获取根标签元素
Element rootElement = document.getRootElement();
// 3 查询特定子标签
List<Element> books = rootElement.elements("book");
// 4 遍历标签,并获取里面的文本内容,封装为Book对象
for (Element book : books) {
// 获取标签属性值
int id = Integer.parseInt(book.attributeValue("id"));
// 间接获取子标签文本
String name = book.element("name").getText();
// 直接获取子标签文本
BigDecimal price = new BigDecimal(book.elementText("price"));
// 封装为Book对象并打印
System.out.println(new Book(id, name, price));
}
}