XML
XML
XML是EXtensible Markup Language的縮寫,翻譯過來就是可擴展標記語言,XML和HTML一樣都是標記語言,也就是說它們的基本語法都是標簽。
-
可擴展 三個字表面上的意思是XML允許自定義格式。但這不代表你可以隨便寫。
-
在XML基本語法規范的基礎上,你使用的那些第三方應用程序、框架會通過XML約束的方式強制規定配置文件中可以寫什么和怎么寫
-
XML基本語法這個知識點的定位是:我們不需要從零開始,從頭到尾的一行一行編寫XML文檔,而是在第三方應用程序、框架已提供的配置文件的基礎上修改。要改成什么樣取決于你的需求,而怎么改取決XML基本語法和具體的XML約束。
1.1 常見配置文件類型
- properties文件,例如druid連接池就是使用properties文件作為配置文件
- XML文件,例如Tomcat就是使用XML文件作為配置文件
- YAML文件,例如SpringBoot就是使用YAML作為配置文件
- json文件,通常用來做文件傳輸,也可以用來做前端或者移動端的配置文件
- 等等...
1.2 properties配置文件
示例
atguigu.jdbc.url=jdbc:mysql://localhost:3306/atguigu
atguigu.jdbc.driver=com.mysql.cj.jdbc.Driver
atguigu.jdbc.username=root
atguigu.jdbc.password=root
語法規范
- 由鍵值對組成
- 鍵和值之間的符號是等號
- 每一行都必須頂格寫,前面不能有空格之類的其他符號
1.3 xml配置文件
示例
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>張三</name>
<age>18</age>
</student>
<student>
<name>李四</name>
<age>20</age>
</student>
</students>
XML的基本語法
- XML的基本語法和HTML的基本語法簡直如出一轍。其實這不是偶然的,XML基本語法+HTML約束=HTML語法。在邏輯上HTML確實是XML的子集。
- XML文檔聲明 這部分基本上就是固定格式,要注意的是文檔聲明一定要從第一行第一列開始寫
<?xml version="1.0" encoding="UTF-8"?>
- 根標簽
- 根標簽有且只能有一個。
- 標簽關閉
- 雙標簽:開始標簽和結束標簽必須成對出現。
- 單標簽:單標簽在標簽內關閉。
- 標簽嵌套
- 可以嵌套,但是不能交叉嵌套。
- 注釋不能嵌套
- 標簽名、屬性名建議使用小寫字母
- 屬性
- 屬性必須有值
- 屬性值必須加引號,單雙都行
XML的約束(稍微了解)
將來我們主要就是根據XML約束中的規定來編寫XML配置文件,而且會在我們編寫XML的時候根據約束來提示我們編寫, 而XML約束主要包括DTD和Schema兩種。
- DTD
- Schema
Schema約束要求我們一個XML文檔中,所有標簽,所有屬性都必須在約束中有明確的定義。
下面我們以web.xml的約束聲明為例來做個說明:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
1.3 DOM4J進行XML解析
1 DOM4J的使用步驟
- 導入jar包 dom4j.jar
- 創建解析器對象(SAXReader)
- 解析xml 獲得Document對象
- 獲取根節點RootElement
- 獲取根節點下的子節點
2 DOM4J的API介紹
1.創建SAXReader對象
SAXReader saxReader = new SAXReader();
2. 解析XML獲取Document對象: 需要傳入要解析的XML文件的字節輸入流
Document document = reader.read(inputStream);
3. 獲取文檔的根標簽
Element rootElement = documen.getRootElement()
4. 獲取標簽的子標簽
//獲取所有子標簽
List<Element> sonElementList = rootElement.elements();
//獲取指定標簽名的子標簽
List<Element> sonElementList = rootElement.elements("標簽名");
5. 獲取標簽體內的文本
String text = element.getText();
6. 獲取標簽的某個屬性的值
String value = element.attributeValue("屬性名");

浙公網安備 33010602011771號