目錄
- XML 簡介
- xml 語法
- 檔案宣告
- (1)創建一個 xml 檔案
- (2)圖書有 id 性 屬性 一 表示唯一 標識,書名,有作者,價格的資訊
- xml 注釋
- 元素(標簽)
- 1)什么是 xml 元素
- 2)XML 命名規則
- 3)xml 也 中的元素(標簽)也 成 分成 單標簽和雙標簽:
- xml 屬性
- 語法規則
- 檔案宣告
- xml 決議技術介紹
- dom4j 決議技術
- Dom4j 類別庫的使用
- dom4j 目錄的介紹
- dom4j 編程步驟
- 獲取 document 物件
- 遍歷 、遍歷 簽 標簽 獲取所有標簽中的內容
XML 簡介
什么是 xml?
xml 是可擴展的標記性語言,
xml 的作用?
xml 的主要作用有:
1、用來保存資料,而且這些資料具有自我描述性
2、它還可以做為專案或者模塊的組態檔
3、還可以做為網路傳輸資料的格式(現在 JSON 為主),
xml 語法
- 檔案宣告,
- 元素(標簽)
- xml 屬性
- xml 注釋
- 文本區域(CDATA 區)
檔案宣告
我們先創建一個簡單 XML 檔案,用來描述圖書資訊
(1)創建一個 xml 檔案

檔案名:

<?xml version="1.0" encoding="UTF-8"?> xml 宣告,
<!-- xml 宣告 version 是版本的意思 encoding 是編碼 -->
而且這個<?xml 要連在一起寫,否則會有報錯
屬性
| version | 是版本號 |
| encoding | 是 xml 的檔案編碼 |
| standalone="yes/no" | 表示這個 xml 檔案是否是獨立的 xml 檔案 |
(2)圖書有 id 性 屬性 一 表示唯一 標識,書名,有作者,價格的資訊
books.xml檔案內容:
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 宣告 version 是版本的意思 encoding 是編碼 -->
<books> <!-- 這是 xml 注釋 -->
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author>耿祥義、張躍平</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
<book id="SN9787020122172"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>駱駝祥子</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author>老舍</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>人民文學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>20.20</price><!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
</books>
在瀏覽器中可以查看到檔案:


xml 注釋
html 和 XML 注釋 一樣 :
<!-- html 注釋 -->
元素(標簽)
html 標簽:
| 格式 | <標簽名>封裝的資料</標簽名> |
| 單標簽 | <標簽名 /> <br /> 換行 <hr />水平線 |
| 雙標簽 | <標簽名>封裝的資料</標簽名> |
1. 標簽名大小寫不敏感
2. 標簽有屬性,有基本屬性和事件屬性
3. 標簽要閉合(不閉合 ,html 中不報錯,但我們要養成良好的書寫習慣,閉合)
1)什么是 xml 元素

元素是指從開始標簽到結束標簽的內容,
例如:
<title>java2實用教程</title>
元素 我們可以簡單的理解為是 標簽,
Element 翻譯 元素
2)XML 命名規則
XML 元素必須遵循以下命名規則:
- 名稱可以含字母、數字以及其他的字符
例如:
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author>耿祥義、張躍平</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
- 名稱不能以數字或者標點符號開始

- 盡管以“xml”(或者 XML、Xml)是可以的、不報錯的,但是不建議名稱以字符 “xml”(或者 XML、Xml)開始

- 名稱不能包含空格

3)xml 也 中的元素(標簽)也 成 分成 單標簽和雙標簽:
單標簽
格式:
<標簽名 屬性=”值” 屬性=”值” ...... />
雙標簽
格式:
< 標簽名 屬性=”值” 屬性=”值” ......>文本資料或子標簽</標簽名>

xml 屬性
xml 的標簽屬性和 html 的標簽屬性是非常類似的, 屬性可以提供元素的額外資訊
在標簽上可以書寫屬性:
一個標簽上可以書寫多個屬性,每個屬性的值必須使用 引號 引起來,
的規則和標簽的書寫規則一致,
API檔案截圖:

- 屬性必須使用引號引起來,不引起來會報錯
示例:

語法規則
- 所有 XML 元素都須有關閉標簽

-
XML 標簽對大小寫敏感

-
XML 必須正確地嵌套

-
XML 檔案必須有根元素
根元素就是頂級元素,
沒有父標簽的元素,叫頂級元素,
根元素是沒有父標簽的頂級元素,而且是唯一一個才行,

-
XML 的屬性值須加引號

-
XML 中的特殊字符


7. 文本區域(CDATA 區)
CDATA 語法可以告訴 xml 決議器,我 CDATA 里的文本內容,只是純文本,不需要 xml 語法決議
CDATA 格式:
<![CDATA[ 這里可以把你輸入的字符原樣顯示,不會決議 xml ]]>
示例:
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author><![CDATA[<<<耿祥義、張躍平>>>]]></author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>

xml 決議技術介紹
xml 可擴展的標記語言,
不管是 html 檔案還是 xml 檔案它們都是標記型檔案,都可以使用 w3c 組織制定的 dom 技術來決議,

document 物件表示的是整個檔案(可以是 html 檔案,也可以是 xml 檔案)
早期 JDK 為我們提供了兩種 xml 決議技術 DOM 和 和 Sax 簡介( 已經過時,但需要知道這兩種技術 )
dom 決議技術是 W3C 組織制定的,而所有的編程語言都對這個決議技術使用了自己語言的特點進行實作,
Java 對 dom 技術決議標記也做了實作,
sun 公司在 JDK5 版本對 dom 決議技術進行升級:SAX( Simple API for XML )
SAX 決議,它跟 W3C 制定的決議不太一樣,它是以類似事件機制通過回呼告訴用戶當前正在決議的內容,
它是一行一行的讀取 xml 檔案進行決議的,不會創建大量的 dom 物件,
所以它在決議 xml 的時候,在記憶體的使用上,和性能上,都優于 Dom 決議,
第三方的決議:
jdom 在 dom 基礎上進行了封裝 、dom4j 又對 jdom 進行了封裝,
pull 主要用在 Android 手機開發,是在跟 sax 非常類似都是事件機制決議 xml 檔案,
這個 Dom4j 它是第三方的決議技術,我們需要使用第三方給我們提供好的類別庫才可以決議 xml 檔案,
dom4j 決議技術
Dom4j 類別庫的使用
Dom4j包下載:https://kohler.lanzouv.com/iv8R207qmvkh
解壓后:

dom4j 目錄的介紹
- docs 是檔案目錄

- 查 如何查 Dom4j 的檔案

- Dom4j 快速入門

- lib 目錄

5. src 目錄是第三方類別庫的原始碼目錄

dom4j 編程步驟
第一步: 先加載 xml 檔案創建 Document 物件
第二步:通過 Document 物件拿到根元素物件
第三步:通過根元素.elelemts(標簽名); 可以回傳一個集合,這個集合里放著,所有你指定的標簽名的元素物件
第四步:找到你想要修改、洗掉的子元素,進行相應在的操作
第五步,保存到硬碟上
獲取 document 物件
創建一個 lib 目錄,并添加 dom4j 的 jar 包,并添加到類路徑,

需要決議的 books.xml 檔案內容:
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 宣告 version 是版本的意思 encoding 是編碼 -->
<books> <!-- 這是 xml 注釋 -->
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author><![CDATA[<<<耿祥義、張躍平>>>]]></author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
<book id="SN9787020122172"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>駱駝祥子</name> <!-- name 標簽描述 的是圖書 的資訊 -->
<author>老舍</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>人民文學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>20.20</price><!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
</books>
決議獲取 Document 物件的代碼
第一步,先創建 SaxReader 物件,這個物件,用于讀取 xml 檔案,并創建
Document
/*
* dom4j 獲取 Documet 物件
*/
@Test
public void getDocument() throws DocumentException {
// 要創建一個 Document 物件,需要我們先創建一個 SAXReader 物件
SAXReader reader = new SAXReader();
// 這個物件用于讀取 xml 檔案,然后回傳一個 Document,
Document document = reader.read("src/books.xml");
// 列印到控制臺,看看是否創建成功
System.out.println(document);
}
遍歷 、遍歷 簽 標簽 獲取所有標簽中的內容
/*
* 讀取 xml 檔案中的內容(xml檔案即上一步的books.xml)
*/
@Test
public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通過創建 SAXReader 物件,來讀取 xml 檔案,獲取 Document 物件
// 第二步,通過 Document 物件,拿到 XML 的根元素物件
// 第三步,通過根元素物件,獲取所有的 book 標簽物件
// 第四小,遍歷每個 book 標簽物件,然后獲取到 book 標簽物件內的每一個元素,再通過 getText() 方法拿到起始標簽和結束標簽之間的文本內容
// 第一步,通過創建 SAXReader 物件,來讀取 xml 檔案,獲取 Document 物件
SAXReader reader = new SAXReader();
//在Junit測驗中,相對路徑是從模塊名開始算
Document document = reader.read("src/books.xml");
//第二步,通過 Document 物件,拿到 XML 的根元素物件
Element rootElement = document.getRootElement();
//System.out.println(rootElement);
//第三步,通過根元素物件,獲取所有的 book 標簽物件
//Element.elements(標簽名)它可以拿到當前元素下的指定的子元素的集合
//element()和elements()都是通過標簽名查找子元素
List <Element> books = rootElement.elements("book");
//第四步,遍歷每個 book 標簽物件,然后獲取到 book 標簽物件內的每一個元素,
for (Element book : books) {
// 拿到 book 下面的 name 元素物件
Element nameElement = book.element("name");
// 拿到 book 下面的 price 元素物件
Element priceElement = book.element("price");
// 拿到 book 下面的 author 元素物件
Element authorElement = book.element("author");
// 拿到 book 下面的 publisher 元素物件
Element publisherElement = book.element("publisher");
// 再通過 getText() 方法拿到起始標簽和結束標簽之間的文本內容
System.out.println("書名:" + nameElement.getText() + " , 價格:"
+ priceElement.getText() + "元, 作者:" + authorElement.getText() + ",出版社:" + publisherElement.getText());
}
}
}
列印內容:

如圖片失效等情況請參閱公眾號文章:https://mp.weixin.qq.com/s/T4tsUg4_YRiDRPEF7fhOtQ
歡迎關注公眾號:“愚生淺末”,一起學習交流,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/499098.html
標籤:Html/Css
上一篇:sass 匯入@import詳解
下一篇:JavaScript詳解
