XML可以呈現(xiàn)復(fù)雜的樹(shù)狀結(jié)構(gòu)
<?xml version= "1.0" encoding= "utf-8" ?>
<datasource id= "db oracle">
這是是標(biāo)簽惕橙,datasource稱(chēng)為標(biāo)簽名,從標(biāo)簽開(kāi)始直到結(jié)束標(biāo)簽孵延,稱(chēng)為元素吕漂,id稱(chēng)為屬性亲配,屬性之間空格隔開(kāi)尘应,屬性值需要在雙引號(hào)或單引號(hào)中惶凝,單雙引號(hào)類(lèi)似Python一樣可以替換,屬性只應(yīng)該在起始標(biāo)簽中犬钢。
</datasource>
XML大小寫(xiě)敏感
標(biāo)簽必須成對(duì)出現(xiàn)苍鲜,有起始有終止
必須有根元素,且只能有一個(gè)根元素玷犹!
XML要求必須元素必須正確嵌套
實(shí)體引用:
實(shí)體引用 | 字符 | 說(shuō)明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | 與 |
&apos | ' | 單引號(hào) |
" | " | 雙引號(hào) |
CDATA段
<![CDATA [文本內(nèi)容]]>
類(lèi)似于多行文本注釋
文本中有大量XML關(guān)鍵字時(shí)混滔,使用CDATA段,使之當(dāng)做一個(gè)文本歹颓。
\可以當(dāng)做單行注釋
XML解析方式
SAX解析方式:速度快坯屿,一邊讀一邊解析,不能修改
DOM解析方式:解析所有元素成一個(gè)個(gè)Node對(duì)象巍扛,速度慢领跛,可遍歷可修改
SAXReader讀取XML文檔
Element element(String name)
獲取當(dāng)前元素下指定名字的子元素
List elements()獲取當(dāng)前元素下指定名字的所有元素
Attribute attribute(int index)
Attribute attribute(String index)
Document document = reader.read(xmlFile)
Element root = document.getRootElement()
List<Element> elements = root.elements()
String name = nameElement.getText()
element.elementText("salary")
解析XML步驟
- 1:創(chuàng)建SAXReader
- 2:創(chuàng)建File對(duì)象描述文件
- 3:使用SAXReader讀取文件(解析過(guò)程),并返回Document對(duì)象撤奸,其封裝了整棵樹(shù)
- 4:通過(guò)Document獲取根元素(根標(biāo)簽)
- 5:根據(jù)xml的結(jié)構(gòu)獲取不同節(jié)點(diǎn)以及對(duì)應(yīng)信息
Xpath路徑表達(dá)式:
斜杠/表示路徑的分隔符
絕對(duì)路徑必須以/起始
相對(duì)路徑不以/起始吠昭,但是不建議使用
.表示當(dāng)前節(jié)點(diǎn)
..表示父節(jié)點(diǎn)
/表示選擇根節(jié)點(diǎn)
//表示任意位置的某個(gè)節(jié)點(diǎn)
@表示選擇某個(gè)屬性
[@*]這里*表示模糊匹配