1. XML介紹
1.1. 什么是XML
??(1)XML 指可擴展標記語言(EXtensible Markup Language)XML 是一種很像HTML的標記語言。
??(2)XML 的設計宗旨是傳輸數據(目前主要是作為配置文件),而不是顯示數據。
??(3)XML 標簽沒有被預定義。您需要自行定義標簽。
??(4)XML 被設計為具有自我描述性。
??(5)XML是W3C的推薦標準。
??可在不同的平臺中使用,比如javaphp都可以使用xml作為文件配置和數據傳輸的工具。
1.2. 常見應用場景
??XML 應用于 Web 開發的許多方面,常用于簡化數據的存儲和共享。
??(1)存儲數據,配置相關信息(目前主要應用范圍)。
??(2)傳輸數據的載體(現在很少使用,基本使用json傳輸數據。
1.3. XML的結構
??XML是一種樹狀結構
??XML 文檔必須包含根元素。該元素是所有其他元素的父元素。XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,并擴展到樹的最底端。
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
1.4. XML語法
??(1)所有XML元素都須有關閉標簽(在HTL,經常會看到沒有關書標簽的元素)
??(2)XML, 標簽對大小寫敏感,這是錯誤的</message)
??(3)XML文檔必須有根元素
??(4)XML的屬性值須加引號<note date=”12/11/2007">
??(5)XML中的注釋<!–This isacomment –
??(在XML中編寫注釋的語法與 HTML的語法很相似)
1.5. XML元素
1.5.1. 什么是XML元素
??XML 元素指的是從(且包括)開始標簽直到(且包括)結束標簽的部分。
??一個元素可以包含:
??(1)其他元素
??(2)文本
??(3)屬性
1.5.2. XML命名規則
??XML 元素必須遵循以下命名規則;
??(1)名稱可以包含字母、數字以及其他的字符;
??(2)名稱不能以數字或者標點符號開始;
??(3)名稱不能以字母xml(或者XML、Xml 等等)開始;
??(4)名稱不能包含空格。
1.6. XML屬性
1.6.1. 什么是XML屬性
??XML元素具有屬性,類似HTML。
??屬性(Attribute)提供有關元素的額外信息。
1.6.2. 屬性使用規范
??XML,屬性必須加引號。
??且不建議是用屬性,因為元素基本可以完成屬性的功能,且更易讀。
1.7. XML解析
1.7.1. XML解析概述
??當我們將數據存儲在xm1文件之后,我們希望通過程序去讀取xm1的內容,通過java基礎的I0也是可以讀取的,但是十分的麻煩。因此出現了一些解析的方式。
??常見的有:DOM解析,SAX解析。
??由于目前xml很少作為傳輸數據的方式,所以解析相關的方法用的也很少,作為了解內容。
1.7.2. 解析方式
??(1)DOM解析:將整個xm1文件加載到內存中,并解析成一個Docunment對象。
??優點:無素與元素之間保留了層級結構關系,可以進行增刪改查。
??缺點:xml文件過大時,可能產生內存溢出問題。
??(2)SAX解析:速度更快,更有效的方式。它會逐行掃描文檔,在掃描的同時進行解析。
??優點:速度更快,可處理大的文件。
??缺點:只能讀取,無法修改,讀取后將釋放資源。
1.8 .XML約束
1.8.1. 什么是DTD
??DTD:文檔類型定義,用來約束XML文件,規定文檔中元素名稱,子元素的名稱及順序,元素的屬性等。
??我們并不要求學會編寫DTD約束文檔,能夠看懂即可。
1.8.2. Schema
1.8.2.1. 什么是Schema
??Schema是XML文檔約束,它是DTD約束的替代品,相較于DTD更強大擴展名市xsd,通過命名空間引入使用。
1.8.2.2. 命名空間
??如果一個文檔中有多個Schema文件,而些文件如果定義了相同的名稱的元素,就會出現名字沖突。這就類似于java中如果沒有包名,那么class文件就很容易沖突是一樣的道理。
??引入方式:
默認隱式:xmins="http://xmns.jcp.org/xm1/ns/javaee"
顯式方式:xmIns:xsd="http://xmlns.jcp.org/xml/ns/javaee"
1.8.2.3. 使用Schema
??(1)將約東文件copy到對應工程中。
??(2)打開Schema約束copy命名空間。
??(3)編寫xm1文件。