XML基礎(chǔ)
1)XML的作用
1.1作為軟件配置文件
1.2作為小型的“數(shù)據(jù)庫”
2)XML語法(由w3c組織規(guī)定的)
標(biāo)簽:
標(biāo)簽名不能以數(shù)字開頭派昧,中間不能有空格,區(qū)分大小寫拢切。有且僅有一個根標(biāo)簽蒂萎。
屬性:
可有多個屬性,但屬性值必須用引號(單引號或雙引號)包含淮椰,但不能省略五慈,也不能單雙混用。
文檔聲明:
encoding="utf-8": 打開或解析xml文檔時(shí)的編碼
注意:
保存xml文檔時(shí)的編碼 和 解析xml文檔時(shí)的編碼要保持一致主穗,才能避免中文亂碼問題泻拦!
3)XML解析
程序讀取或操作xml文檔
兩種解析方式:DOM解析vs ??SAX解析
DOM解析原理:一次性把xml文檔加載成Document樹,通過Document對象得到節(jié)點(diǎn)對象黔牵,通過節(jié)點(diǎ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("名稱")指定名稱的第一個子標(biāo)簽對象
elementIterator("名稱");指定名稱的所有子標(biāo)簽對象
elements();所有子標(biāo)簽對象
屬性:
attributeValue(“名稱”) 指定名稱的屬性值
attribute("名稱")指定名稱的屬性對象
getName()屬性名稱
getValue() ?屬性值
atributeIterator()所有屬性對象(Iterator)
attributes()所有屬性對象(List)
文本:
getText() ?得到當(dāng)前標(biāo)簽的文本
elementText("子標(biāo)簽名稱")得到子標(biāo)簽的文本
今天的目標(biāo):Dom4J修改xml ??+ xPath技術(shù)+ SAX解析+ XML約束
2 Dom4j修改xml文檔
2.1寫出內(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引入
問題:當(dāng)使用dom4j查詢比較深的層次結(jié)構(gòu)的節(jié)點(diǎn)(標(biāo)簽金赦,屬性音瓷,文本),比較麻煩<锌埂I鳌!
3.2 xPath作用
主要是用于快速獲取所需的節(jié)點(diǎn)對象漠烧。
3.3在dom4j中如何使用xPath技術(shù)
1)導(dǎo)入xPath支持jar包 杏愤。jaxen-1.1-beta-6.jar
2)使用xpath方法
List ?selectNodes("xpath表達(dá)式");查詢多個節(jié)點(diǎn)對象
Node ??????selectSingleNode("xpath表達(dá)式");查詢一個節(jié)點(diǎn)對象
3.4 xPath語法
/絕對路徑 ?????表示從xml的根位置開始或子元素(一個層次結(jié)構(gòu))
//相對路徑 ??????表示不分任何層次結(jié)構(gòu)的選擇元素。
*通配符 ????????表示匹配所有元素
[]條件 ??????????表示選擇什么條件下的元素
@屬性 ???????????表示選擇屬性節(jié)點(diǎn)
and關(guān)系表示條件的與關(guān)系(等價(jià)于&&)
text()文本 ??????????表示選擇文本內(nèi)容