XML基礎(chǔ)
1)XML的作用
1.1作為軟件配置文件
1.2作為小型的“數(shù)據(jù)庫(kù)”
2)XML語(yǔ)法(由w3c組織規(guī)定的)
標(biāo)簽:
標(biāo)簽名不能以數(shù)字開(kāi)頭,中間不能有空格,區(qū)分大小寫(xiě)。有且僅有一個(gè)根標(biāo)簽。
屬性:
可有多個(gè)屬性,但屬性值必須用引號(hào)(單引號(hào)或雙引號(hào))包含,但不能省略,也不能單雙混用。
文檔聲明:
encoding="utf-8": 打開(kāi)或解析xml文檔時(shí)的編碼
注意:
保存xml文檔時(shí)的編碼 和 解析xml文檔時(shí)的編碼要保持一致,才能避免中文亂碼問(wèn)題!
3)XML解析
程序讀取或操作xml文檔
兩種解析方式:DOM解析vs ??SAX解析
DOM解析原理:一次性把xml文檔加載成Document樹(shù),通過(guò)Document對(duì)象得到節(jié)點(diǎn)對(duì)象,通過(guò)節(jié)點(diǎn)對(duì)象訪問(wèn)xml文檔內(nèi)容(標(biāo)簽,屬性,文本,注釋)。
Dom4j工具(基于DOM解析原理):
讀取xml文檔:
Document doc = new SAXReader().read("xml文件");
節(jié)點(diǎn):
nodeIterator();所有節(jié)點(diǎn)
標(biāo)簽:
element("名稱")指定名稱的第一個(gè)子標(biāo)簽對(duì)象
elementIterator("名稱");指定名稱的所有子標(biāo)簽對(duì)象
elements();所有子標(biāo)簽對(duì)象
屬性:
attributeValue(“名稱”) 指定名稱的屬性值
attribute("名稱")指定名稱的屬性對(duì)象
getName()屬性名稱
getValue() ?屬性值
atributeIterator()所有屬性對(duì)象(Iterator)
attributes()所有屬性對(duì)象(List)
文本:
getText() ?得到當(dāng)前標(biāo)簽的文本
elementText("子標(biāo)簽名稱")得到子標(biāo)簽的文本
今天的目標(biāo):Dom4J修改xml ??+ xPath技術(shù)+ SAX解析+ XML約束
2 Dom4j修改xml文檔
2.1寫(xiě)出內(nèi)容到xml文檔
XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
wirter.write(Document);
2.2修改xml文檔的API
增加:
DocumentHelper.createDocument()增加文檔
addElement("名稱")增加標(biāo)簽
addAttribute("名稱",“值”)增加屬性
修改:
Attribute.setValue("值")修改屬性值
Element.addAtribute("同名的屬性名","值")修改同名的屬性值
Element.setText("內(nèi)容")修改文本內(nèi)容
刪除
Element.detach();刪除標(biāo)簽
Attribute.detach();刪除屬性
3 xPath技術(shù)
3.1引入
問(wèn)題:當(dāng)使用dom4j查詢比較深的層次結(jié)構(gòu)的節(jié)點(diǎn)(標(biāo)簽,屬性,文本),比較麻煩?。?!
3.2 xPath作用
主要是用于快速獲取所需的節(jié)點(diǎn)對(duì)象。
3.3在dom4j中如何使用xPath技術(shù)
1)導(dǎo)入xPath支持jar包 。jaxen-1.1-beta-6.jar
2)使用xpath方法
List ?selectNodes("xpath表達(dá)式");查詢多個(gè)節(jié)點(diǎn)對(duì)象
Node ??????selectSingleNode("xpath表達(dá)式");查詢一個(gè)節(jié)點(diǎn)對(duì)象
3.4 xPath語(yǔ)法
/絕對(duì)路徑 ?????表示從xml的根位置開(kāi)始或子元素(一個(gè)層次結(jié)構(gòu))
//相對(duì)路徑 ??????表示不分任何層次結(jié)構(gòu)的選擇元素。
*通配符 ????????表示匹配所有元素
[]條件 ??????????表示選擇什么條件下的元素
@屬性 ???????????表示選擇屬性節(jié)點(diǎn)
and關(guān)系表示條件的與關(guān)系(等價(jià)于&&)
text()文本 ??????????表示選擇文本內(nèi)容