xml主要用來描述數據,好比配置文件,網絡之間傳輸數據等,而且在android中也常常用xml來佈局,,接下來便來學習xml經常使用的東西java
1.XML語法android
xml語法分爲: 安全
1.1 文檔聲明網絡
1.2 元素less
好比包含demo文本內容的title元素 :<title>demo</title>eclipse
不包含文本的元素:<title></title>函數
1.3 元素屬性佈局
好比:<person name="張三">post
1.4 註釋學習
1.5 CDATA區
由於在XML元素中, 字符都會被解析器解析出來,像<>&" 這樣的字符會被直接報錯,示例以下圖所示:
因此若是使用元素沒法知足數據信息時,則能夠經過CDATA來實現,CDATA通常用來存儲函數方法,CSS.大量文本等,好比:
<![CDATA[ body { background: rgb(11,253,216); } ]]>
1.6 轉義字符
因爲在XML元素中, 使用<>&" 這樣的字符會被直接報錯,除了經過CDATA區替代外,咱們還能夠經過轉義字符來實現.
若要在元素中強制使用,須要轉義的字符(包括;)有:
示例以下:
2.XML約束
若是xml格式出現出錯,則程序將不能正確獲取文件內容,爲了保證數據的規範性和安全性,因此能夠編寫一個約束文檔來約束xml的書寫規範,約束文檔能夠規範xml中出現的指定元素名稱,屬性以及出現的順序.
經常使用的約束有兩種:
3.DTD約束
DTD 可被聲明於 XML 文檔中,也可做爲一個外部引用。
3.1 聲明於 XML 文檔
若是內部使用,則能夠直接在文檔聲明下面寫.格式爲"<!DOCTYPE 根元素名稱 [ 約束內容 ]>"
示例以下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE persons [ <!ELEMENT persons (person+)> <!ELEMENT person (年齡,性別,其它信息)> <!ELEMENT 年齡 (#PCDATA)> <!ELEMENT 性別 (#PCDATA)> <!ELEMENT 其它信息 (#PCDATA)> <!ATTLIST person 姓名 ID #REQUIRED 國籍 (中國|外國) #IMPLIED 特色 CDATA "吃睡學習" 動物級別 CDATA #FIXED "高級動物" > <!ENTITY zhangsanMsgUrl "person/id43645.com"> ]> <persons> <person 姓名="zhangsan" 國籍="中國" > <年齡>21</年齡> <性別>男</性別> <其它信息>zhangsanMsgUrl </其它信息> </person> <person 姓名="lisi" 特色="吃喝玩樂" > <年齡>21</年齡> <性別>男</性別> <其它信息> person/id9945.com </其它信息> </person> </persons>
上面的示例,出現了!ELEMENT、!ATTLIST、#REQUIRED等等DTD約束的關鍵字,接下來咱們便來看看這些關鍵字的做用
!ELEMENT-元素定義
ELEMENT關鍵字用來聲明一個XML元素,語法:<!ELEMENT 元素名稱 (使用規則)>
使用規則說明:
!ATTLIST-屬性定義
ATTLIST關鍵字用來約束某個元素的屬性信息語法:
<!ATTLIST 元素名稱 屬性名 屬性值類型 約束 屬性名 屬性值類型 約束 ...... >
屬性值類型說明
約束說明
3.2 DTD做爲外部引用
若是在xml中要使用外部文件的DTD約束,則須要在聲明下面寫入聲明的根元素名以及DTD文件名,格式爲"<!DOCTYPE 根元素名稱 SYSTEM "文件名稱.dtd">"
示例,將3.1的內部使用改成外部引用 persons.xml文件以下:
<?xml version="1.0" encoding="utf-8"?> "<!DOCTYPE persons SYSTEM "persons.dtd">" <persons> <person 姓名="zhangsan" 國籍="中國" > <年齡>21</年齡> <性別>男</性別> <其它信息>zhangsanMsgUrl </其它信息> </person> <person 姓名="lisi" 特色="吃喝玩樂" > <年齡>21</年齡> <性別>男</性別> <其它信息> person/id9945.com </其它信息> </person> </persons>
persons.dtd文件以下:
<!ELEMENT persons (person+)> <!ELEMENT person (年齡,性別,其它信息)> <!ELEMENT 年齡 (#PCDATA)> <!ELEMENT 性別 (#PCDATA)> <!ELEMENT 其它信息 (#PCDATA)> <!ATTLIST person 姓名 ID #REQUIRED 國籍 (中國|外國) #IMPLIED 特色 CDATA "吃睡學習" 動物級別 CDATA #FIXED "高級動物" > <!ENTITY zhangsanMsgUrl "person/id43645.com">
4.Schema約束
4.1 示例-建立personSchema.xsd
在eclipse中,點擊File->new->other,而後建立XML Schema File文件,名字爲personSchema.xsd.內容以下:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/personSchema" targetNamespace="http://www.example.org/personSchema" elementFormDefault="qualified"> <!--講解1--> <xs:element name='persons'> <!--約束xml根元素爲persons--> <xs:complexType> <!--complexType:定義persons爲複合元素--> <xs:sequence maxOccurs='unbounded '> <!--講解2--> <xs:element name='person'> <!--約束persons下的子元素名字必須爲person--> <xs:complexType> <xs:sequence> <!--sequence:必須按照順序實現:先有姓名,最後年齡.--> <xs:element name='姓名' type='xs:string' /> <xs:element name='性別' type='xs:string' /> <xs:element name='年齡' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
講解1:
xmlns:xs=http://www.w3.org/2001/XMLSchema
xmlns=http://www.example.org/personSchema
targetNamespace="http://www.example.org/personSchema"
講解2:
<xs:sequence maxOccurs='unbounded'>
4.2 示例-建立對應的XML
而後在eclips中點擊 File->new->other,而後建立XML文件,名字爲person.xml,而後點擊next,而後選擇建立基於schema的XML:
再選擇咱們剛剛寫好的personSchema.xsd:
而後設置文件名爲person.xml,且內容以下:
<?xml version="1.0" encoding="UTF-8"?> <p:persons xmlns:p="http://www.example.org/personSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/personSchema personSchema.xsd "> <p:person> <p:姓名>p:張三</p:姓名> <p:性別>p:男</p:性別> <p:年齡>p:22</p:年齡> </p:person> <p:person> <p:姓名>p:李四</p:姓名> <p:性別>p:男</p:性別> <p:年齡>p:17</p:年齡> </p:person> </p:persons>
xmlns:p="http://www.example.org/personSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/personSchema personSchema.xsd ">
4.3 驗證
以下圖所示,假如咱們不按照personSchema.xsd約束來寫XML,則直接出現error:
未完待續,下章學習java解析xml