1、xml
1. 文檔聲明
2. xml屬性
3. 元素(標籤)
5. 文本區域(CDATA區)
xml是可擴展的標記性語言。
1. 文檔聲明
<?xml version="1.0" encoding="UTF-8"?> xml聲明。
<!-- xml聲明 version是版本的意思 encoding是編碼 -->
而且這個<?xml 要連在一起寫,否則會有報錯
屬性
version 是版本號
encoding 是xml的文件編碼
standalone="yes/no" 表示這個xml文件是否是獨立的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml聲明 version是版本的意思 encoding是編碼 -->
<books> <!-- 這是xml註釋 -->
<book id="SN123123413241"> <!-- book標籤描述一本圖書 id屬性描述 的是圖書 的編號 -->
<name>java編程思想</name> <!-- name標籤描述 的是圖書 的信息 -->
<author>華仔</author> <!-- author單詞是作者的意思 ,描述圖書作者 -->
<price>9.9</price> <!-- price單詞是價格,描述的是圖書 的價格 -->
</book>
<book id="SN12341235123"> <!-- book標籤描述一本圖書 id屬性描述 的是圖書 的編號 -->
<name>葵花寶典</name> <!-- name標籤描述 的是圖書 的信息 -->
<author>班長</author> <!-- author單詞是作者的意思 ,描述圖書作者 -->
<price>5.5</price> <!-- price單詞是價格,描述的是圖書 的價格 -->
</book>
</books>
2. xml屬性
xml的標籤屬性和html 的標籤屬性是非常類似的,屬性可以提供元素的額外信息
在標籤上可以書寫屬性:
一個標籤上可以書寫多個屬性。每個屬性的值必須使用 引號 引起來。
的規則和標籤的書寫規則一致。
屬性必須使用引號引起來,不引會報錯示例代碼
3. 元素(標籤)
先回憶一下前面的html:
html標籤:
- 格式:<標籤名>封裝的數據</標籤名>
- 單標籤: <標籤名 /> <br /> 換行 <hr />水平線
- 雙標籤 <標籤名>封裝的數據</標籤名>
- 標籤名大小寫不敏感
- 標籤有屬性,有基本屬性和事件屬性
- 標籤要閉合(不閉合 ,html中不報錯。但我們要養成良好的書寫習慣。閉合)
1)什麼是xml元素
元素是指從開始標籤到結束標籤的內容。
例如:<title>java編程思想</title>
元素 我們可以簡單的理解爲是 標籤。
Element 翻譯 元素
2)XML 命名規則
XML 元素必須遵循以下命名規則:
2.1)名稱可以含字母、數字以及其他的字符
例如:<book id="SN213412341"> <!-- 描述一本書 -->
<author>班導</author> <!-- 描述書的作者信息 -->
<name>java編程思想</name> <!-- 書名 -->
<price>9.9</price> <!-- 價格 -->
</book>
2.2)名稱不能以數字或者標點符號開始
2.3)這裏有一點在文檔中說明名稱不能以字符 “xml”(或者 XML、Xml)開始,但是都試了一下,它是可以的
2.4)名稱不能包含空格
3)xml中的元素(標籤)也 分成 單標籤和雙標籤:
單標籤
格式: <標籤名 屬性=”值” 屬性=”值” ...... />
雙標籤
格式:< 標籤名 屬性=”值” 屬性=”值” ......>文本數據或子標籤</標籤名>
4. xml註釋
html 和 XML 註釋 一樣 : <!-- html 註釋 -->
5. 文本區域(CDATA區)
CDATA 格式:
<![CDATA[ 這裏可以把你輸入的字符原樣顯示,不會解析xml ]]>
語法規則:
- 所有 XML 元素都須有關閉標籤(也就是閉合)
- XML 標籤對大小寫敏感
- XML 必須正確地嵌套
- XML 文檔必須有根元素
- XML 的屬性值須加引號
2、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文件。
3、dom4j解析技術
由於dom4j 它不是sun公司的技術,而屬於第三方公司的技術,我們需要使用dom4j 就需要到dom4j官網下載dom4j的jar包。當然在最後我還給出jar包,不用到官網這麼麻煩了,裏面還包括第三方的學習文檔(docs)
dom4j 編程步驟:
第一步: 先加載xml文件創建Document對象
第二步:通過Document對象拿到根元素對象
第三步:通過根元素.elelemts(標籤名); 可以返回一個集合,這個集合裏放着。所有你指定的標籤名的元素對象
第四步:找到你想要修改、刪除的子元素,進行相應在的操作
第五步,保存到硬盤上
獲取document對象
需要解析的books.xml文件內容
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪劍譜</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花寶典</name>
<price>99.99</price>
<author>班長</author>
</book>
</books>
遍歷 標籤 獲取所有標籤中的內容
/*
* 讀取xml文件中的內容
*/
@Test
public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通過創建SAXReader對象。來讀取xml文件,獲取Document對象
// 第二步,通過Document對象。拿到XML的根元素對象
// 第三步,通過根元素對象。獲取所有的book 標籤對象
// 第四小,遍歷每個book標籤對象。然後獲取到book標籤對象內的每一個元素,再通過getText() 方法拿到起始標籤和結束標籤之間的文本內容
// 第一步,通過創建SAXReader對象。來讀取xml文件,獲取Document對象
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
// 第二步,通過Document對象。拿到XML的根元素對象
Element root = document.getRootElement();
// 打印測試
// Element.asXML() 它將當前元素轉換成爲String對象
// System.out.println( root.asXML() );
// 第三步,通過根元素對象。獲取所有的book 標籤對象
// Element.elements(標籤名)它可以拿到當前元素下的指定的子元素的集合
List<Element> books = root.elements("book");
// 第四步,遍歷每個book標籤對象。然後獲取到book標籤對象內的每一個元素,
for (Element book : books) {
// 測試
// System.out.println(book.asXML());
// 拿到book下面的name元素對象
Element nameElement = book.element("name");
// 拿到book下面的price元素對象
Element priceElement = book.element("price");
// 拿到book下面的author元素對象
Element authorElement = book.element("author");
// 再通過getText() 方法拿到起始標籤和結束標籤之間的文本內容
System.out.println("書名" + nameElement.getText() + " , 價格:"
+ priceElement.getText() + ", 作者:" + authorElement.getText());
}
}
打印內容:
dom4j-1.6.1:https://download.csdn.net/download/mxcsdn/10455422