xml簡介與使用
Xml是什麽?
XML:可擴展標記語言
1.與HTML相似,HTML註重頁面·展示
2.xml註重於數據的保存
3.無需預編譯
4.符合w3c的標準
可擴展:可以自定義
標記:計算機所能認知的信息符號
xml的組成部分:
1.文檔聲明 <?xml version="1.0" encoding="UTF-8"?>
2.元素 <p></p>
3.屬性 <p id="haha"></p>
4.註釋 解釋說明 <!-- vfgfh-->
5.特殊字符
6.CDATA區域
xml解析器不會處理,而是當成字符串原樣輸出
<![CDATA[xml內容]]>
xml中的註意點:
1. xml文件中只能有一個根節點
2.節點要成對出現,有開始有閉合
3.節點必須正確嵌套
4.嚴格區分大小寫
dom,HTML 都是類似於一個倒掛的樹,我們把倒掛的樹稱之為===》dom樹
DOM:(Doucument Object Model)文檔對象模型
DOM模型:
解決創建maven慢的情況
archetypeCatalog=internal
Key 和value
解析xml文件的方式:
- DOM:基於xml文檔樹結構的解析,把xml文件中內容都讀取到內存中,比較占內存,消耗資源多。
- SAX:基於事件的解析,消耗資源小
- JDOM:針對於Java的特定的模型 滿足2 8原則
- DOM4J:for(4)JDOM的一個分支,源碼開放,性能優異,功能強大
DTD:Document Type Definition(文檔類型定義)
1. 規範編碼
- 可以讓瀏覽器正常的顯示
<!ELEMENT school (grade+)>
ELEMENT:元素,關鍵字
School:元素名稱
Grade:子元素或者元素類型 CDATA PCDATA (Parse)解析數據,不包含子元素
():用來給元素分組
+ :該對象最少出現一次
* :0到多次,可有可無,並且可以多次
?:出現或者不出現,出現的話只能出現一次
, :元素出現的順序
| :兩者必須出現一個
DTD文檔使用方式:
2.DTD分為外部DTD和內部DTD兩種:
1)使用內部DTD格式:
<!DOCTYPE 根元素名稱 [
<!ELEMENT 子元素名稱 (#PCDATA) >
]>
2)引用外部DTD格式:
<?xml version="1.0" encoding="gb2312">
<!DOCTYPE 根元素名稱 SYSTEM “outDtd.dtd”>
<根元素名稱>
...
</根元素名稱>
---------------
引用外部DTD時,要在DOCTYPE中使用關鍵詞SYSTEM或PUBLIC ,後者是已經被認可的文件。
通常引用自己寫的dtd文件使用SYSTEM關鍵詞
---------------
*************************************************************************************************************************
3.DTD對元素聲明
<!ELEMENT 元素名 元素內容 >
ELEMENT 關鍵字,表示對元素類型進行聲明
元素名 為當前指定元素名稱
元素內容可分為:EMPTY、子元素型、混合型、ANY和#PCDATA 5種
元素內容類型:
1)EMPTY 該元素只可能有屬性而不會有元素內容。
<!ELEMENT element-name EMPTY>
實例:
<br/>
2)ANY 可以包含DTD中定義的其他任何元素或已編譯的字符數據,包括PCDATA、元素或元素與PCDATA的混合內容。
<!ELEMENT element-name ANY >
3)#PCDATA 不包含其他子元素而只能有文本數據,文本數據可以是普通字符、CDATA段中的內容、字符引用和實體引用。
<!ELEMENT element-name (#PCDATA) >
4)子元素型 分為3種:序列:<!ELEMENT 根元素名稱(a,b,c,d ..)> , 選擇<!ELEMENT 根元素名稱 (a|b|c|d..) > 混合<!ELEMENT 根元素名稱((a|b),(c|d))>
5)混合型 既可以包含子元素又可以包含文本數據<!ELEMENT 根元素名 (#PCDATA | 子元素)* >
?字符:它說明元素可以出現0次或1次。
* 字符:它說明元素可以不出現,或出現1次或多次。
+ 字符:它說明元素必須出現至少一次,或者說可以出現一到多次
如:<!ELEMENT 根元素名稱(a+,b?,c*,d ..)>
DTD對屬性聲明
<!ATTLIST 元素名 屬性名 屬性類型 屬性限定條件>
---------------------------------------------------------
屬性類型(常見):
CDATA 字符數據,即沒有標記的文本
枚舉 備選屬性值的值列表
ID 該屬性在文檔中具有唯一性
IDREF 文檔中元素的ID類型屬性的值
IDREFS 由空格分隔的元素的多個ID
ENTITY 在DTD中聲明的實體名稱
ENTITIES 在DTD中聲明的由空格分隔的多個實體的名稱
NMTOKEN XML名稱記號
NMTOKENS 由空格份額表格的多個XML名稱記號
NOTATION 在DTD中聲明的記法的名稱
----------------------------------------------------------
屬性限定條件(常見):
#REQUIRED 元素的每個實例必須具有該屬性
#IMPLIED 元素實例不必包含該屬性
#FIXED+固定值 屬性值被指定為固定值,且用戶不能改變
默認值 如果元素中不包含該屬性的屬性值,那麽默認值將作為屬性值
實體聲明與引用
實體分為以下幾種
1.普通實體與參數實體
1)普通實體:
<!ENTITY name "text" >
name:實體引用的名稱
"text":實體的內容
引用方式:&name;
<p>&name;</p>
2)參數實體:
<!ENTITY % name "text" >
text為參數實體內容,其中不能包含如:>,<,&,‘,",等特殊字符,這些字符的使用可以用特有的字替代
引用方式為 : %name;
2.內部實體與外部實體
內部實體如上,,
外部實體:
<!ENTITY name PUBLIC FRI "URI" >
PUBLIC格式:實體內容是被某一個領域所認可的文件
SYSTEM:通常自己寫的用這個
FRI:Formal Public Identifier 為正式公用標識符,全球唯一
xml簡介與使用