1.XML的定義:
XML 于 1998 年 2 月 10 日成為?W3C?的推薦標準。xml一般指可擴展標記語言,可擴展標記語言是一種很像超文本標記語言的標記語言。它的設計宗旨是傳輸數據,而不是顯示數據。
2.通過XML我們可以自定義自己的標簽,如:
?
<mail><from>tom</from><to>lily</to><detail>I will go home this weekend!</detail> </mail>
3.XML結構
XML是一種樹結構。樹是一種重要的非線性數據結構,直觀地看,它是數據元素(在樹中稱為結點)按分支關系組織起來的結構,很象自然界中的樹那樣。XML文檔必須包含根元素,該元素是所有其他元素的父元素。XML文檔中的元素形成了一棵文檔樹,這棵樹從根部開始,并擴展到樹的最底端。
4.XML語法規則
XML聲明,如:<?xml version="1.0" encoding="utf-8"?>
它定義XML的版本(1.0)和所使用的編碼(utf-8)字符集。
- 所有的XML元素都是成對出現的,有一個開始標簽,就必須有一個關閉標簽。
- XML標簽對大小寫敏感,標簽與標簽是不同的。
- XML文檔必須有根元素,標簽如果需要嵌套,必須正確嵌套,在內層打開的標簽就必須在內層關閉。
- XML標簽如果需要添加屬性,屬性值必須加引號。
- 在XML中編寫注釋的語法與HTML的語法很相似,都是。
- 在XML中,空格會被保留,不像HTML中,加再多的空格最終都只合并為一個。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特殊符號:
引用 | 符號 | 說明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | and符號 |
' | ' | 單引號 |
" | " | 雙引號 |
?
?
5.XML命名規則
?
XML元素必須遵循以下命名規則:
?
- 名稱可以包含字母、數字以及其他的字符
- 名稱不能以數字或者標點符號開始
- 名稱不能以字母 xml(或者 XML、Xml 等等)開始
- 名稱不能包含空格
- 可使用任何名稱,沒有保留的字詞。
6.創建XML文件
/** * 創建XML文件 * * @throws IOException */ public void createXml() throws IOException { // 創建Document對象 Document document = DocumentHelper.createDocument(); // 根元素節點 Element root = document.addElement("students"); root.addComment("all students info"); // 添加注釋 Element student = root.addElement("student"); // 根元素節點添加子節點 student.addAttribute("id", "001"); // 添加節點屬性 Element name = student.addElement("name"); name.addText("July"); // 設置節點文本 Element age = student.addElement("age"); age.addText("18"); // 設置XML美化格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); // 編碼字符集設置 // xml寫入器 XMLWriter writer = new XMLWriter(new FileWriter("students.xml"), format); // 寫操作 writer.write(document); writer.flush(); writer.close(); }
7:DTD的概念:
DTD(文檔類型定義)的作用是定義XML文檔的合法構建模塊。擁有正確語法的XML被稱為“形式良好”的XML,我們可以通過DTD驗證XML是“合法”的 XML。
8.DTD元素
<!ELEMENT 元素名稱 類別>
只有 PCDATA 的元素
只有 PCDATA 的元素通過圓括號中的#PCDATA進行聲明:
<!ELEMENT 元素名稱 (#PCDATA)>
示例:
<!ELEMENT from (#PCDATA)>
帶有任何內容的元素
通過類別關鍵詞ANY聲明的元素,可包含任何可解析數據的組合:
<!ELEMENT 元素名稱 ANY>
示例:
<!ELEMENT mail ANY>
帶有子元素(序列)的元素
帶有一個或多個子元素的元素通過圓括號中的子元素名進行聲明:
<!ELEMENT 元素名稱 (子元素名稱 1)>
或者
<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>
示例:
<!ELEMENT mail (from,to,detail)>
8.DTD屬性
聲明屬性
屬性聲明使用下列語法:
<!ATTLIST 元素名稱 屬性名稱 屬性類型 默認值>
9.
CDATA與PCDATA
XML文檔中的所有文本均會被解析器解析,只有CDATA區段中的文本會被解析器忽略。
10.外部文檔聲明
這是包含DTD的“mail.dtd”文件:<!ELEMENT mail (from,to,detail)> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT detail (#PCDATA)> XML文件:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mail SYSTEM "mail.dtd"> <mail><from>tom</from><to>lily</to><detail>I will go home this weekend!</detail> </mail>
11.內部文檔聲明
?
假如DTD被包含在XML源文件中,它應當通過下面的語法包裝在一個DOCTYPE聲明中:
?
假如DTD被包含在XML源文件中,它應當通過下面的語法包裝在一個DOCTYPE聲明中:<!DOCTYPE root-element [element-declarations]> 如:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mail[ <!ELEMENT mail (from,to,detail)> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT detail (#PCDATA)> ]> <mail><from>tom</from><to>lily</to><detail>I will go home this
?
?
?