Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> (16)XML/DTD/Sax解析/Schema語法簡介

(16)XML/DTD/Sax解析/Schema語法簡介

編輯:關於Android編程

Xml

概述
Java,跨平台的開發語言。
Xml,跨平台的傳輸數據。
Xml語法
標簽語言,類似html。
Xml亂碼問題。

\

 

1.文檔聲明

用來聲明xml的基本屬性,用來指揮解析引擎如何去解析當前xml

通常一個xml都要包含並且只能包含一個文檔聲明

xml的文檔必須在整個xml的最前面,在文檔聲明之前不能有任何內容

 

--version是必須存在的屬性,表明當前xml所遵循規范的版本,目前位置都寫1.0就可以了

--encoding用來只會解析引擎在解析xml時使用的編碼,一定要保證xml格式的數據在保存時使用的編碼和解析時使用的編碼必須一致,才不會有亂碼問題

--standalone屬性用來指明當前xml是否是一個獨立的xml,默認值是yes表明當前文檔不需要依賴於其他文檔,如果當前文檔依賴其他文檔而存在則需要將此值設置為no

 

2.元素

一個xml標簽就是一個元素

一個標簽分為開始標簽和結束標簽

在開始標簽和結束標簽之間可以包含文本內容,這樣的文本內容叫做標簽體

如果標簽的開始標簽和結束標簽之間不包含標簽和子標簽則可以將開始標簽和結束標簽進行合並,這樣的標簽就叫做自閉標簽

一個標簽中也可以包含任意多個子標簽,但是一定要注意標簽一定要合理嵌套

一個格式良好的xml要包含並且只能包含一個根標簽,其他的標簽都應該是這個標簽的子孫標簽

區分大小寫,例如,

是兩個不同的標記。

不能以數字或標點符號或"_"開頭。

不能以xml(或XML、或Xml等)開頭。

不能包含空格

名稱中間不能包含冒號(:)。

3.屬性

一個標簽可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:

屬性的名在定義時要遵循和xml元素相同的命名規則

屬性的值需要用單引號或雙引號括起來

4. 注釋

注釋可以出現在xml文檔的任意位置除了整個文檔的最前面.不能出現在文檔聲明之前

注釋不能嵌套注釋

5.CDATA區/轉義字符:

當XML中一段內容不希望被解析器解析時可以使用CDATA區將其包住

當解析器遇到CDATA區時會將其內容當作文本對待,不會進行解析

語法:

 

轉義字符:

& --> &

< --> <

> --> >

" --> "

' --> '

 

 

6.處理指令

處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔內容。

DTD

約束xml

1.如何在xml中引入dtd

(1)外部引入

可以將dtd的約束內容寫在外置的dtd文件中,這個文件後綴必須為.dtd而文件保存時必須用utf-8編碼保存.

再在xml文件中使用

 

如果寫的是SYSTEM表明當前引入的dtd在當前文件系統中,後面制定的文件位置是當前硬盤中的位置

 

如果寫的是PUBLIC表明當前引入的dtd在網絡公共位置中,後面要指明dtd的名字和dtd所在網絡位置URL地址

(2)內部引入

直接在xml中書寫dtd

 

dtd約束....

]>

 

2.dtd語法

(1)元素

元素約束:

存放類型:ANY/EMPTY

元素約束:子元素的列表,將可以包含的子元素用小括號括起來

子元素之間可以使用逗號進行分割,表明子元素必須按照順序出現

子元素之間可以使用豎線進行分割,表面子元素出現其中之一

#PCDATA 表明包含標簽體

 

+ 表示一次或多次

* 0次或多次

? 0次或一次

 

也可以使用小括號進行組的操作

 

 

(2)屬性

屬性名 屬性類型 屬性約束

屬性名2 屬性類型 屬性約束

......

>

 

屬性類型:

CDATA:表示屬性的值是一個普通字符串

ENUMERATED : 屬性的值是一個枚舉列表中的值

ID: 表明屬性的值必須在整個文檔中都是唯一的,如果有重復的id則校驗不通過,ID屬性的值只能由字母,下劃線開始,不能使用數字,不能出現空白字符

屬性約束:

#REQUIRED --- 表明當前屬性是一個必須存在的屬性,如果這樣的屬性不存在則在校驗時會報錯

#IMPLIED --- 表明當前屬性是一個可選的屬性,可以有也可以沒有

#FIXED '固定值' ---表明當前屬性具有一個固定值,這樣的屬性不需要進行賦值,自動就會取這個固定值為值.如果這樣的屬性指定了一個不是固定值的值則校驗報錯

'默認值' --- 表明當前屬性具有一個默認值,如果給了其他的值就用其他值,如果沒有給值則取這個默認值

(3)ENTITY(實體)

,就是對一大段內容的引用,可以簡化代碼的復用

引用實體:在xml中引用的實體叫做引用實體

&實體名稱;

參數實體:在dtd中引用的實體叫做參數實體

%實體名稱;

兩種解析思想

\

 

Sax解析——dom4j解析入門

XML編程:利用java程序去增刪改查(CRUD)xml中的數據

解析思想:

dom解析

sax解析

基於這兩種解析思想市面上就有了很多的解析api

sun jaxp既有dom方式也有sax方式,並且這套解析api已經加入到j2se的規范中,意味這不需要導入任何第三方開發包就可以直接使用這種解析方式.但是這種解析方式效率低下,沒什麼人用.

dom4j 可以使用dom方式高效的解析xml.

pull

 

!!dom4j

導入開發包,通常只需要導入核心包就可以了,如果在使用的過程中提示少什麼包到lib目錄下在導入缺少的包即可

Schema之名稱空間

約束xml

\

 

Schema語法簡介

Schema是xml的約束技術,出現的目的是為了替代dtd

本身也是一個xml,非常方便使用xml的解析引擎進行解析

對名稱空間有非常好的支持

支持更多的數據類型,並且支持用戶自定義數據類型

可以進行語義級別的限定,限定能力大大強於dtd

相對於dtd不支持實體

相對於dtd復雜的多,學習成本比較的高

如何在xml中引入Schema --- !!!!!名稱空間的概念:全世界獨一無二的名字,用來唯一的標識某個資源,通常是公司的域名,只是名字而已並不真的表示資源的位置.

~~~ Schema的語法---參照Schema的文檔,了解即可

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved