我的学习之路_第十六章_xml
【XML】
可擴(kuò)展的標(biāo)記語(yǔ)言
作用:存放數(shù)據(jù)、配置文件
【XML的語(yǔ)法】
xml的文件擴(kuò)展名必須為: xml
xml的內(nèi)容必須滿足以下要求:
1.固定的文檔聲明
2.合格的元素和屬性
3.正確的注釋
4.符合要求的特殊字符編寫(xiě)規(guī)則
●文檔聲明 ( <?xml version="1.0" encoding = "UTF-8" ?> )
1.文檔聲明必須以<?xml 開(kāi)頭, 以?>結(jié)束
2.文檔聲明必須從文檔的0行0列位置開(kāi)始
3.文檔聲明的兩個(gè)屬性:
a. version: 指定的xml文檔版本.必須屬性
b. encoding: 指定當(dāng)前文檔的編碼. 可選屬性,默認(rèn)值為:UTF-8
●元素 <bean> </bean>
1.元素是xml文檔中重要的組成部分,
2.普通元素的結(jié)構(gòu)開(kāi)始標(biāo)簽、元素體、結(jié)束標(biāo)簽組成.
3.元素體:元素體可以是元素,也可以是文本.
4.空元素:空元素只有開(kāi)始標(biāo)簽,沒(méi)有結(jié)束標(biāo)簽,但元素必須自己閉合.<a/>
5.元素命名:
a) 區(qū)分大小寫(xiě)
b) 不能使用空格鍵,不能使用冒號(hào)
c) 不建議以xml開(kāi)頭,不管大寫(xiě)還是小寫(xiě).
6.格式良好的xml文檔,必須只有一個(gè)根元素.(文檔聲明下來(lái)的第一個(gè)元素就是根元素)
●屬性(attribute)
<Person id="g001" name="二狗" ></Person>
1.屬性是元素的一部分,必須出現(xiàn)在元素開(kāi)始標(biāo)簽中,必須用空格分開(kāi),多個(gè)元素之間也用空格隔開(kāi)
2.屬性的定義格式:屬性名=屬性值,其中屬性值必須用單引或者雙引
3.一個(gè)元素可以有0-n個(gè)屬性,但是一個(gè)元素中,不能出現(xiàn)同名屬性
4.屬性名不能使用空格,冒號(hào)等特殊符號(hào),而且必須以字母開(kāi)頭
5.多個(gè)屬性之間沒(méi)有先后順序
●注釋
xml的注釋,以<!-- 開(kāi)始, 以--> 結(jié)束.注釋內(nèi)容不會(huì)被xml解析器解析!
【xml的轉(zhuǎn)義字符】
< &lt;
> &gt;
" ";
' &apos;
& &;
列入 1<3 在xml中 1 <;3
【CDATA】
格式 <![CDATA[
里面可以寫(xiě)任何內(nèi)容,
都會(huì)以文本的格式出現(xiàn)
里面的出現(xiàn)的字符都無(wú)需轉(zhuǎn)義
]]>
作用:提高了xml文檔的可讀性
【XML約束】
在xml技術(shù)里,可以編寫(xiě)一個(gè)文檔來(lái)約束一個(gè)xml文檔的書(shū)寫(xiě)規(guī)范,這稱之為xml約束
常見(jiàn)的約束有 DTD , Schena
DTD語(yǔ)法:
▲ 文檔聲明
1.內(nèi)部DTD,在xml文檔內(nèi)部嵌入,值對(duì)當(dāng)前xnl有效
2.外部DTD- 本地DTD,DTD文檔在本地系統(tǒng)上,公司內(nèi)部自己項(xiàng)目使用.(SYSTEM )
3.外部DTD- 公共DTD,DTD文檔在網(wǎng)絡(luò)上,一般都有框架提供(PUBLIC )
公共DTD包含5部分內(nèi)容:
1.<!DOCTYPE:固定格式
2.beans : 規(guī)定根元素叫beans
3.PUBLIC : 公共的,說(shuō)明DTD 約束文檔來(lái)源網(wǎng)絡(luò)
4."-//SPRING//DTD BEAN 2.0//EN": 約束文檔的名稱,有框架寫(xiě)好提供.
5.http://www.springframework.org/dtd/spring-beans-2.0.dtd:約束文檔在網(wǎng)絡(luò)上的位置
▲ 元素申明
? 表示該對(duì)象可以出現(xiàn)0次或者1次,
+ 表示該對(duì)象可以出現(xiàn)1次或者1次以上
* 表示可以出現(xiàn)任意次數(shù)
( ) 一組數(shù)據(jù)
| 選擇關(guān)系,只能在多個(gè)元素之間選擇一個(gè)
, 順序關(guān)系,規(guī)定:a,b,c 寫(xiě)xml文檔只能按照abc順序編寫(xiě)
【使用DTD約束文檔的步驟】
1.每一個(gè)DTD約束文檔中都會(huì)有一行代碼以 <!DOCTYPE開(kāi)頭,賦值過(guò)來(lái)放在xml文檔中
a.!DOCTYPE : 固定的DTD約束文檔的格式
b.beans : 規(guī)定xml文檔中的根元素只能叫beans
c.SYSTEM : 系統(tǒng), dtd約束文檔中來(lái)源本地的操作系統(tǒng)
d: "bean.dtd" : 約束文檔的位置,我們使用的約束文檔在當(dāng)前文件夾下,可以使用"bean,dtd"
2.根據(jù)根元素的名字,寫(xiě)出根元素
3.鼠標(biāo)放在根元素上/或者按F2,根據(jù)提示寫(xiě)出xml文檔
Schema約束
▲命名空間
命名空間是用來(lái)處理元素和屬性的名稱沖突問(wèn)題
約束文檔和xml的關(guān)系
約束 約束
官方文檔---->自定義schema文檔---->xml文檔
聲明命名空間:
默認(rèn)命名空間:<xxx xmlns=" " >, 使用<標(biāo)簽>
顯式命名空間:<xxx xmlns:別名=" "> , 使用<別名:標(biāo)簽>
【Schema 約束文檔的使用】:
1.每一個(gè)schema約束文檔,都必須有一個(gè)命名空間(namespace)
起名要求:全球唯一
使用域名(網(wǎng)址) 命名:http://www.itcast.cn/web01/01
bean-schema.xsd文檔中的命名空間
targetNamespace="http://itcast.cn/bean"
2.在xml文檔中聲明命名空間
默認(rèn)聲明:
xmlns="http://www.itcast.cn/bean"
<bean></bean>
顯示聲明:
xmlns:my="http://www.itcast.cn/bean"
<my:bean></my:bean>
3.聲明schema約束文檔的位置
先聲明官方文檔的位置
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
根據(jù)官方文檔聲明自定義schema文檔的位置
xsi:chemaLocation="http://www.itcast.cn/bean bean-schema.xsd"
http://www.itcast.cn/bean : 命名空間
bean-schema.xsd:schema文檔的位置
【XML解析】
開(kāi)發(fā)中比較常見(jiàn)的解析方式有三種:
1.DOM : 要求解析器把整個(gè)xml文檔裝載到內(nèi)存,并解析成一個(gè)Document對(duì)象
a) 優(yōu)點(diǎn) : 元素與元素之間保留結(jié)構(gòu)關(guān)系,所以可以進(jìn)行增刪改查操作.
b) 缺點(diǎn) : xml文檔過(guò)大,可能出現(xiàn)內(nèi)存溢出顯示
2.SAX : 是一種速度更快,更有效的方法.它逐行掃描文檔,一邊掃描一邊解析
a) 優(yōu)點(diǎn) : 處理速度快,可以處理大文件
b) 缺點(diǎn) : 只能讀,逐行后將釋放資源.
3.PULL : Android內(nèi)置的xml解析方式,類似sax.
SAX(推): 就像一座山,逐層推掉,想要的保留下來(lái),不想要的就扔掉.
PULL(拉) : 把想要的數(shù)據(jù)拉過(guò)來(lái),不需要的數(shù)據(jù)連拉都不拉,直接扔掉
常見(jiàn)的解析發(fā)開(kāi)包:
● JAXP: sum公司提供支持DOM和SAX開(kāi)發(fā)包
● JDom: dom4j兄弟
● jsoup: 一種處理 HTML特定解析開(kāi)發(fā)包
● dom4j: 比較常見(jiàn)的解析開(kāi)發(fā)包,hibernate底層采用(主要用這個(gè))
【使用dom4j解析xml文檔】
1.SAXReader對(duì)象(dom4j核心類)
利用方法 read(...)加載執(zhí)行xml文檔
2.Document對(duì)象
返回值 Element getRootElement() 獲取根元素
3.Element對(duì)象
返回值 Element[] elements(...) 獲取的指定名稱的所有元素.可以不指定名稱
element(...) 獲得指定名稱第一個(gè)子元素,可以不指定名稱
getName() 獲得當(dāng)前元素的元素名
attributeValue(...) 獲得指定屬性名的屬性值
elementText(...) 獲得指定名稱子元素的文本值
getText() 獲得當(dāng)前元素的文本內(nèi)容
?
轉(zhuǎn)載于:https://www.cnblogs.com/jia-/p/7071631.html
總結(jié)
以上是生活随笔為你收集整理的我的学习之路_第十六章_xml的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVA记事本的图形用户界面应用程序含过
- 下一篇: CSS学习笔记 display属性