xml (extensible markup language)
1.xml 是可擴(kuò)展標(biāo)記語(yǔ)言
2.xml是一種標(biāo)記語(yǔ)言,類(lèi)似于html
3.xml的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
4.xml沒(méi)有被預(yù)定義
5.使用約束的xml文檔設(shè)計(jì)具有自我描述性
6.xml是w3c的推薦標(biāo)準(zhǔn)
xml格式
1.描述:<?xml version="1.0" encoding="gbk" ?>
2.根元素
3.子元素
xml元素命名
1.區(qū)分大小寫(xiě)
2.字母開(kāi)頭,不能以數(shù)字開(kāi)頭
3.命名空間不能包含空格
注釋
格式:
注意:不能嵌套
CDATA區(qū) - 解析器不解析此內(nèi)容
格式: <![CDATA[ 內(nèi)容 ]]>
轉(zhuǎn)義字符
& : &
< : <
> : >
" : "
' : '
空格 : ?
引入css
格式: <?xml-stylesheet type="text/css" href="xx.css" ?>
xml約束
1.DTD
2.Schema
DTD約束
1.關(guān)聯(lián)DTD - 只能引入一種
內(nèi)部關(guān)聯(lián):格式:<!DOCTYPE 根元素 [ 約束語(yǔ)法 ]>
外部關(guān)聯(lián):格式:<!DOCTYPE 根元素 SYSTEM "dtd文件">
公共關(guān)聯(lián):格式:<!DOCTYPE 根元素 PUBLIC "文件名稱(chēng)" "文件路徑">
2.語(yǔ)法-元素
格式:<!ELEMENT 元素名稱(chēng) (元素內(nèi)容聲明)>
? : 表示該元素可以出現(xiàn),但是只能出現(xiàn)一次 <!ELEMENT books (book?)>
* : 表示該元素允許出現(xiàn)任意多次,也可以零次 <!ELEMENT books (book*)>
+ : 表示該元素最少出現(xiàn)一次,可以出現(xiàn)多次 <!ELEMENT books (book+)>
() : 用來(lái)給元素分組 <!ELEMENT book (name,price)>
| : 表示列出的元素中選擇一個(gè) <!ELEMENT book (name|price)>
, : 表示元素必須按照指定的順序出現(xiàn) <!ELEMENT book (name,price)>
EMPTY : 如果一個(gè)元素的CONTENT 被聲明為EMPTY,那么該元素不能包含任何子元素和文本,僅可以使用屬性 <!ELEMENT name EMPTY>
ANY : 表示該元素中可以包含任何在DTD中定義的元素內(nèi)容 <!ELEMENT name ANY>
#PCDATA : 表示該元素可以包含任何字符數(shù)據(jù),但是不能在其中包含任何子元素 <!ELEMENT name #PCDATA>
3.語(yǔ)法-屬性
格式:<!ATTLIST 元素名稱(chēng) [屬性名稱(chēng) 屬性類(lèi)型 約束].. >
<!ATTLIST book
id ID #REQUIRED
city (北京|上海|廣州) "上海" //這個(gè)在瀏覽器沒(méi)有展示???
company CDATA #FIXED "sun" //這個(gè)在瀏覽器沒(méi)有展示???
>
#REQUIRED 必須存在的屬性
#IMPLIED 可以為空
#FIXED "value" 固定值
Defaultvalue 默認(rèn)值
設(shè)置固定值,方便xml中被引用:設(shè)置:<!ENTITY bookVal "java Core"> xm中引用:<title>&bookVal;</title> 這樣還可以直接引用一個(gè)xml中所有內(nèi)容
設(shè)置固定值,方便dtd中被使用:設(shè)置: <!ENTITY % bookInfo "price,name"> dtd中引用:<ELEMENT book (title,%bookInfo;)>
屬性類(lèi)型
ID 唯一標(biāo)識(shí)
CDATA 字符數(shù)據(jù)
IDREF 引用已有的唯一標(biāo)識(shí)
Schema約束
1.本身就是一個(gè)xml文件,擴(kuò)展名xsd擴(kuò)展名xsd (xml schema document)
2.必須有一個(gè)根節(jié)點(diǎn),叫Schema
3.是一套預(yù)定義的xml元素和屬性創(chuàng)建的
4.在eclipse中新建一個(gè)xml schema文件即可。
5.新建后添加別名xs: 這個(gè)出處 <xs:schema xmlns:xs="">
關(guān)聯(lián)schema - 重點(diǎn)
xmlns : 引用命名空間(xsd的targetNamespace)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
官方規(guī)定 - 用于實(shí)例化
xsi:schemaLocation="http://www.example.org/schematest schematest.xsd"
兩個(gè)參數(shù)
1.引用schema名稱(chēng)
2.schema文件位置
schema語(yǔ)法
complexType 復(fù)合類(lèi)型(復(fù)雜類(lèi)型)
sequence 順序出現(xiàn) minOccurs最少幾個(gè),maxOccurs最大幾個(gè)
choice 選擇出現(xiàn)
all 沒(méi)有順序出現(xiàn),必須全部都在
simpleContent 簡(jiǎn)單類(lèi)型
extension 擴(kuò)展
restriction 約束(限制條件)
四種復(fù)雜類(lèi)型
1.空元素
2.包含其它元素的元素
3.僅包含文本的元素
4.包含元素和文本的元素
案例:
1.僅含有屬性的空元素 <attribute name="src"></attribute>
2.僅含有屬性的空元素,屬性必須寫(xiě) <attribute name="src" use="required"></attribute>
optional 可選
required 必須
prohibited 禁用
2.僅含有屬性的空元素,屬性必須寫(xiě),并且規(guī)定值的類(lèi)型<attribute name="src" use="required" type="integer"></attribute>
3.必須含有屬性的非空元素
schema自定義類(lèi)型
<xs:simpleType name="string">
<xs:restriction base="xs:string">
<xs:pattern value="\d{6}-\d{8}-\d{4}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
需要用自己的命名空間引用:<xs:element name="books" type="tns:string"></xs:element>
tns是自己的命名空間
注意:
xmlns : 引用命名空間
xmlns:tns : 是對(duì)命名空間起一個(gè)叫 tns 的別名
xmlns:xsi :值是固定寫(xiě)法 http://www.w3.org/2001/XMLSchema-instance,每一個(gè)xml都要有
xsi:schemaLocation : 是命名空間的位置
targetNamespace : 命名空間
xml解析
1.DOM解析 ,全部加載到內(nèi)存。
獲得工廠(chǎng)實(shí)例 DocumentBuilderFactory
通過(guò)工廠(chǎng)獲得解析器實(shí)例 DocumentBuilder
通過(guò)解析器 Document
解析xml 根元素getDocumentElement,子元素getElementsByTagName,屬性getAttributes
2.SAX解析
獲得工廠(chǎng)實(shí)例 SAXParserFactory
創(chuàng)建解析器 SAXParser
創(chuàng)建解析Handler DefaultHandler(startDocument,endDocument,startElement,endElement,characters)
解析xml 注意:文本值的賦值需要全局變量注意清空全局變量
從Handler中獲得解析的集合 開(kāi)放get方法
3.Dom4j解析
獲得解析器 SAXReader
解析獲得Document對(duì)象 Document
獲得根元素 getRootElement()
獲得所有子元素 elements()
遍歷所有子元素 多層for循環(huán)遍歷
4.Dom4j-xpath查詢(xún)
5.Dom4j-curd