1. 程式人生 > 實用技巧 >XML 可拓展標記語言

XML 可拓展標記語言

XML 簡介

a) xml, eXtensible Markup Language, 可拓展標記語言.是一種標記語言.
b) xml是一種非常靈活的語言, 沒有固定的標籤, 所有的標籤都可以自定義.
c) 通常,xml被用於資訊的記錄和傳遞. 因此xml經常用於充當配置檔案

XML格式

a) 宣告資訊 ,用於描述XML的版本,編碼方式.

版本始終是1.0 編碼一般選utf-8

<?xml version="1.0" encoding="UTF-8"?>

b) 根元素 (一對標籤)

根元素有且僅有一個

c) xml是大小寫敏感的

d) 標籤是成對的,而且要正確巢狀

e) 屬性值要使用雙引號

下面id就是屬性,""裡面是屬性值

<?xml version="1.0" encoding="utf-8"?>
<a>
	<aa id="101">
		xxx
	</aa>
</a>

f) 註釋寫法

<!-- 這裡是註釋-->****
<?xml version="1.0" encoding="utf-8"?>
<books>
	<book>
		<name>
			xml101
		</name>
		<author>
			張三
		</author>
		<price>
			50.5
		</price>
	</book>
	<book>
		<name>
			xml102
		</name>
		<author>
			李四
		</author>
		<price>
			40.4
		</price>
	</book>
</books>
<!-- 這裡是註釋-->

可以直接用瀏覽器開啟

還可以摺疊

DTD

DTD 簡介

a) DTD , Document Type Definition,文件型別定義

b) DTD 用於約束xml的文件格式,保證xml是一個有效的xml.

c) DTD 可以分為兩種,內部DTD,外部DTD.

DTD內部宣告

假如 DTD 被包含在您的 XML 原始檔中,它應當通過下面的語法包裝在一個 DOCTYPE 宣告中:

<!DOCTYPE 根元素 [元素宣告]>

元素宣告語法 :

數量詞

+: 出現一次或多次
?: 出現0次或一次
*: 出現任意次

屬性宣告語法

<!ATTLIST 元素名稱 屬性名稱 屬性型別 預設值>

PCDATA

PCDATA 的意思是被解析的字元資料(parsed character data)。

可把字元資料想象為 XML 元素的開始標籤與結束標籤之間的文字。

PCDATA 是會被解析器解析的文字。這些文字將被解析器檢查實體以及標記。

文字中的標籤會被當作標記來處理,而實體會被展開。

不過,被解析的字元資料不應當包含任何 &、< 或者 > 字元;需要使用 &、< 以及 > 實體來分別替換它們。

CDATA

CDATA 的意思是字元資料(character data)。

CDATA 是不會被解析器解析的文字。在這些文字中的標籤不會被當作標記來對待,其中的實體也不會被展開。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE scores[
	<!ELEMENT  scores (student*)>
	<!ELEMENT  student (name,course,score)>
	<!ATTLIST  student id CDATA #REQUIRED>
	<!ELEMENT  course (#PCDATA)>
	<!ELEMENT  score (#PCDATA)>
	<!ELEMENT  name (#PCDATA)>
]>

<scores>
	<student id="1">
		<name>
			張三
		</name>
		<course>
			數學
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			數學
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

外部的DTD宣告

假如 DTD 位於 XML 原始檔的外部,那麼它應通過下面的語法被封裝在一個 DOCTYPE 定義中:

要建立一個單獨的dtd文件 1.dtd

<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT  scores (student*)>
<!ELEMENT  student (name,course,score)>
<!ATTLIST  student id CDATA #REQUIRED>
<!ELEMENT  course (#PCDATA)>
<!ELEMENT  score (#PCDATA)>
<!ELEMENT  name (#PCDATA)>

然後引入

<?xml version="1.0" encoding="utf-8" ?>
<!-- 引入外部DTD檔案-->
<!DOCTYPE scores SYSTEM "1.dtd">

<scores>
	<student id="1">
		<name>
			張三
		</name>
		<course>
			數學
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			數學
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

XSD

簡介

- XML Schema是DTD的替代者
- 不僅可以定義XML文件的結構,還可以規範文件的內容
- XSD本身也是XML文件,
- XSD採用XML文件來定義語義約束,比DTD要複雜一些,但是功能強大的多。

  • 支援豐富的資料型別
  • 允許開發者自定義資料型別
  • 可讀性強
  • 可針對未來需求進行擴充套件

XML的解析

對xml檔案進行操作 , 包括建立,增刪改查

DOM解析

官網提供的解析方式

基於XML樹結構, 比較耗資源

SAX解析

民間的解析方式 , 基於事件的解析

消耗消耗小,適用資料量大的xml

JDOM 解析

開源 , 比DOM快

DOM4J

DOM forJAVA


解析方式用到了再學emmm