XML
XML
XML(Extensible Markup Language)可扩展标记语言
- XML允许自定义格式
- XML在基本语法规范的前提下,第三方程序和框架会通过XML约束的方式强制规定配置文件中可以写什么和怎么写
常见配置文件类型
- properties文件,例如druid连接池就是使用properties文件作为配置文件
- XML文件,例如Tomcat就是使用XML文件作为配置文件
- YAML文件,例如Spring Boot就是用YAML作为配置文件
- json文件,通常作为文件传输,也可以用来作前端或移动端的配置文件
XML的书写规范和约束
- 根标签只能有一个
- 第一行永远都是<?xml version="1.0" encoding="UTF-8"?> 前面没有别的东西
- xml有约束,约束用于限定XML内部能编写的内容
- dtd 简单 上手快 约束没有schema细致
- schema 复杂 上手慢 约束要比dtd细致
使用DOM4J进行XML解析
DOM4J是java用来解析XML文件的工具jar包
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jdbc>
<dev>
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<url>jdbc:mysql://192.168.2.2:3306/xiaobai</url>
<username>root</username>
<password>Zhuwenxue2002</password>
</dev>
<test>
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<url>jdbc:mysql:///xiaobai</url>
<username>root</username>
<password>123456</password>
</test>
</jdbc>
package com.xiaobai.xml;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class Dom4jTest {
@Test
public void testDom4j() throws Exception {
SAXReader reader = new SAXReader();
InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("jdbc.xml");
Document read = reader.read(resourceAsStream);
//此read对象就是一颗Dom树,其访问节点,属性,文本的方法与DOM语法相同
//以下代码是遍历该Dom树
Element rootElement = read.getRootElement();//获取根节点
System.out.println(rootElement.getName());
List<Element> elements = rootElement.elements();//获取根节点下所有子节点
for (Element element : elements) {
System.out.println("\t" + element.getName());//遍历子节点
List<Element> elements1 = element.elements();
for (Element element1 : elements1) {
System.out.printf("\t\t" + element1.getName() + ":" + element1.getText());//遍历子节点的子节点
}
System.out.println("\n");
}
}
}