xml解析

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. XML總結(jié) 1.1. XML簡(jiǎn)介 XML : 可擴(kuò)展的標(biāo)記語(yǔ)言。(和HTML非常類(lèi)似的) 可擴(kuò)展的。 自定義...
    Ethan_Walker閱讀 3,369評(píng)論 0 12
  • 1. XML簡(jiǎn)介 以下內(nèi)容來(lái)自于http://www.w3school.com.cn/xml 基本知識(shí) XML 和...
    WebSSO閱讀 2,091評(píng)論 1 7
  • 一、緒論 上周工作需要了解項(xiàng)目的一些大體內(nèi)容,結(jié)果在xml解析這一塊看的迷迷糊糊的,所以在這里把學(xué)習(xí)到xm...
    cao健強(qiáng)閱讀 4,516評(píng)論 1 7
  • Xml Schema的用途 1. 定義一個(gè)Xml文檔中都有什么元素 2. 定義一個(gè)Xml文檔中都會(huì)有什么屬性 ...
    _東邪_閱讀 2,469評(píng)論 2 4
  • 1 XML解析No29 【 XML:可拓展標(biāo)記語(yǔ)言,語(yǔ)言和HTML類(lèi)似,也是一種標(biāo)記語(yǔ)言。 特點(diǎn):標(biāo)記是自定義...
    征程_Journey閱讀 1,789評(píng)論 0 9

友情鏈接更多精彩內(nèi)容