XML
1. XML (eXtensible Markup Language
可擴展標記語言) 源標記語言
描述的是結構和語義,而不是格式化。用於網絡數據傳遞。
2. Documentt Type Definition (DTD 文檔類型定義)
a) XML中每個元素都是成對出現的(有開始,有結束)
<student id=”110”></students>
相同的屬性只能出現一次
b) XML中的元素嵌套關係呀哦保持正確性,即先開始的標記要先結束,後開始的標記要後結束。
3. 每一個XML文檔都有且只有一個根元素(Root Element),所謂根元素,就是唯一一個包含了其他所有元素的元素。
4. XML描述的是文檔的內容與語義,而不是文檔怎麼表示。
5. XML聲明語句
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
開始位置要頂格寫
?前後是不能有空格的。
<?xml-style-sheet type=”text/css”href=”hello.css”?> XML處理指令
6. 通過樣式,我們可以實現XML內容與展現形式的分離。
XML的註釋:<!-- -->
註釋不允許嵌套,.不能放在標記中間
7. XML內置了五種實體;< < 小於
> > 大於
& &
" “
' ‘
自定義實體 如:Entity.css
<?xmlversion="1.0"?>
<!DOCTYPEcompany[
<!ENTITYshengsiyaun "聖思園------">
<!ENTITY address "北京上地">
]>
<company>
<name>&shengsiyaun;</name>
<address>&address;</address>
</company>
8. 格式正規(well formed)的XML文檔。符合XML語法要求的XML文檔就是格式正規的XML文檔
Altava XMLspy 非常實用的工具
DTD
1. DTD(驗證XML的有效性、合法性)
有效的(valid)XML文檔,首先XML文檔是個格式正規的的XML文檔,然後又需要滿足DTD的要求,這樣的XML文檔稱爲有效的XML文檔
2. #PCDATA (Parsed Character Data),可解析的字符數據。
3. 關於普通實體與參數實體
A) 普通實體是在dtd中定義,xml中使用,使用的時候格式爲:&address;
B) 參數實體是在dtd中定義,dtd中使用,定義的時候使用%,使用的時候也需要使用%,%address;
C)外部普通實體定義的時候要加 SYSTEM
格式:<!ENTITY address SYSTEM “http://www.shensiyuan.com/xml.xml”>表示使用網址中的內容來替換掉address,而不是使用網址本身字符串來替換掉address。
D)外部參數實體
<!ENTITY %address SYSTEM ”http://www,shenyiayuan.com/xml/xml”>使用的時候:%address;
4. DTD中元素、屬性、元素之間的包含關係。
Schema
1.
2. 所有的schema文檔,其根元素必須爲schema
3. SimpleType與complexType的比較
A) SimpleType類型的元素沒有子元素,也沒有屬性。
B) 當需要定義的元素包含子元素或者屬性時,必須要使用ComplexType。
4. SimpleContent,用於ComplexType元素上,用於限定該Complex的內容類型,表示該Complex沒有子元素,同時該ComplexType需要有屬性,否則它就成爲SimpleType了。
5. 通過DOCTYPE可以明確指定文檔的根元素,因爲DOCTYPE後面跟的元素就是文檔的根元素;
通過Schema是沒法明確指定目標XML文檔的根元素。XMLspy是通過推斷那個根元素包含了其他元素來選擇包含元素最多的那個元素作爲文檔的根元素。但我們可以明確指定文檔的根元素而不必按照XMLspy的生成來做。
簡單工廠模式,又叫靜態工廠方法(Static Factory Method)。
工廠類(Creator)
抽象產品(Product)
具體產品(ConcreteProduct)
DOM
DOM documentObject Model(文檔對象模型) 解析XML文檔,基於隨機訪問的,全部XML屬性結構全部在內存中,隨時可以訪問。
1. 對於XML應用開發來說,DOM就是一個對象化的XML數據接口,一個與語言無關、與平臺無關的標準接口規範。
2. 要嚴格區分XML樹中的根結點與根元素結點:
根結點(Document)代表的XML文檔本身,是我們解析XML文檔的入口,
而根元素結點則表示XML文檔的根元素,它對應與XML文檔的ROOT。
3. DOM 的四個基本接口:Document Node NodeList NamedNodeMap
4. JAXP (Java API for XML Parsing)用於XML解析的Java API。
5. DocumentBuliderFactory與DocumentBuilder之間的關係:代碼
SAX
SAX (Simple API for XML) 面向XML的簡單APIs. 與DOM相比,SAX是按順序解析的,錯過了就不能在解析了。 使用的是觀察者模式(類似於GUI中的事件)。
1. DOM與SAX:
使用DOM解析XML時,首先將XML文檔加載到內存當中,然後可以通過隨機的方式訪問內存中的DON樹,
SAX是基於事件而且是順序執行的,一一旦經過了某個元素,我們沒有辦法去訪問它了,SAX不必事先將XML加載到內存中。因此,它佔據內存要比DOM小,對於大型的XML文檔來說,通常它會使用SAX而不是DOM進行解析。
2. DOM與SAX的解析步驟:
DOM 第一:解析工廠 DocumentBuilderFactory
第二:解析器DocumentBuilder
第三: Document
SAX 第一.解析工廠: SAXParserFactory
第二;解析器: SAXParser
第三:開始解析。parse
jDOM
jDOM 框架(解決DOM與SAX解析XML文檔的問題)
1. jDom 方法鏈編程風格(method chain style)
基於調用的方法返回對象本身,可以繼續在使用此對象。
2. 對於JDOM 的Format類的getRawFormat方法,通常用於XML數據的網絡傳輸,應爲這種格式會去掉所有不必要的空白,因此能夠減少網絡傳輸的數據量。