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