JavaWeb day6


schema約束????????

? ? ? ? ? ? ? ? dtd語法:<!ELEMENT? 元素名稱? 約束>

? ? ? ? ? ? ? ? schema符合xml語法苏携,xml語句

? ? ? ? ? ? ? ? 一個xml中可以有多個schema封恰,多個schema使用名稱空間區(qū)分(類似于java包名)

? ? ? ? ? ? ? ? dtd里面有PCDATA類型灵奖,但是在schema里面可以支持更多的數(shù)據(jù)類型

? ? ? ? ? ? ? ? ? ? 比如? 年齡? 只能是整數(shù),在schema可以直接定義一個 ?? 整數(shù)類型

? ? ? ? ? ? ? ? schema語法更加復雜兄朋,schema目前無法替代dtd

schema的快速入門

? ? ? ? ? ? ? ? 創(chuàng)建一個schema文件 ? 后綴名是? .xsd

? ? ? ? ? ? ? ? ? ? ? ? 根節(jié)點<>

??????????????????????????? 在schema文件里面

? ? ? ? ? ? ? ? ? ? ? ? 屬性? xmlns="http://www.w3.org/2001/XMLSchema"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示當前xml文件是一個約束文件

? ? ? ? ? ? ? ? ? ? ? ? targetNamespace="http://www.itcast.cn/20151111"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用schema約束文件仙蚜,直接通過這個地址引入約束文件

? ? ? ? ? ? ? ? ? ? ? ? elementFormDefault="qualified" ? ??

????????????步驟???????

? ? ? ? ? ? ? ? 1.看xml中有多少個元素 ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? <element>

? ? ? ? ? ? ? ? 2.看簡單元素和復雜元素

? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果復雜元素

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <complexType>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <sequence>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 子元素

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </sequence>

? ? ? ? ? ? ? ? 3.簡單元素脂倦,寫在復雜元素的

? ? ? ? ? ? ? ? ? ? ? ? ? ? <element name="person">

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <complexType>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <sequence>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <element name="name"? type="string"></element>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <element name="age"? type="int"></element>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </sequence>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </complexType>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </element>

? ? ? ? ? ? ? ? ? ? 4.在被約束文件里面引入約束文件?

? ? ? ? ? ? ? ? ? ?? <person xmlns:xsi="http://www.w3.org/2011/XMLSchema-instance"

? ? ? ? ? ? ? ? ? ? xmlns="http://www.itcast.cn/20151111"

? ? ? ? ? ? ? ? ? ? xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd"???????>?

? ? ? ? ? ? ? ? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

????????????????????????????????????——表示 xml 是一個被約束文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

????????????????????xmlns="http://www.itcast.cn/20151111 "

????????????????????????????????????——是約束文檔里面? targetNamespace

? ? ? ? ? ? ? ? ?? xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">

????????????????????targetNamespace 空格 約束文檔的地址路徑

? ? ? ? ? ? <sequence>:表示元素的出現(xiàn)的順序

? ? ? ? ? ? <all>:元素只能出現(xiàn)一次 ? ?

? ? ? ? ?? <choice>:元素只能出現(xiàn)其中的一個 ? ??

? ? ? ? ? ? maxOccurs="unbounded"? 表示元素的出現(xiàn)的次數(shù)

? ? ? ? ? ? <any></any>:表示任何元素

? ? ? ? ? ? 可以約束任何元素

? ? ? ? ? ? ? ? 寫在復雜元素里面

sax解析的原理

解析xml有兩種技術(shù)? dom和sax

?根據(jù)xml的層級結(jié)構(gòu)在內(nèi)存中分配一個樹形結(jié)構(gòu)

? ? ? ? ? 把xml中標簽,屬性冯痢,文本封裝成對象

? ? sax方式:事件驅(qū)動氮昧,邊讀邊解析

? ?? 在java.xml.parsers包里面

? ? ? ? ? ? ? ? ? ? ?? SAXParser

? ? ? ? ? ? ? ? ? ? ? ? ? ? 此類的實例可以從SAXParserFactory.newSAXParser() 方法獲得

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? parse

? ? ? ? ? ? ? ? ? ? ?? SAXParserFactory

? ? ? ? ? ? ? ? ? ? ? ? ? ? 實例 newInstance() 方法得到

? ? ? ? ? ? sax執(zhí)行過程:

? ? ? ? ? ? ? ? ? ? ? ? 當解析到開始標簽時,自動執(zhí)行starElement方法

? ? ? ? ? ? ? ? ? ? ? ? 當解析到文本時候浦楣,自動執(zhí)行characters方法

? ? ? ? ? ? ? ? ? ? ? ?? 當解析到結(jié)束標簽時袖肥,自動執(zhí)行endElement方法

使用jaxp的sax方式解析

? ? sax方式不能實現(xiàn)增刪改操作,只能做查詢操作

? ? 打印出整個文檔

? ? ? ? ? ? 執(zhí)行parse方法振劳,第一個參數(shù)xml路徑椎组,第二個參數(shù)是 事件處理器

? ? ? ? ? ? ? ? ? ? 創(chuàng)建一個類,繼承事件處理器的類

? ? ? ? ? ? ? ? ? ? 重寫里面的三個方法

? ? ? ? ? ? 獲取到所有的name元素的值

? ? ? ? ? ? ? ? ? ? 定義一個成員變量? flag=false;

? ? ? ? ? ? ? ? ? ? 判斷開始方法是否是name元素历恐,如果是name元素 ?? 寸癌,把flag值設(shè)置成true

? ? ? ? ? ? ? ? ? ? 當flag值是true,在characters方法里面打印內(nèi)容

? ? ? ? ? ? ? ? ? ? 當執(zhí)行到結(jié)束方法時弱贼,把flag值設(shè)置成false

? ? ? ? ? ? 獲取第一個name元素的值

? ? ? ? ? ? ? ? ? ? 定義一個成員變量 idx=1灵份;

? ? ? ? ? ? ? ? ? ? 在結(jié)束方法時候, idx+1? idx++

? ? ? ? ? ? ? ? ? ? 想要打印出第一個name元素的值

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在characters方法里面判斷

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 判斷flag=true并且 idx==1哮洽,在打印內(nèi)容

使用dom4j解析xml

? ? ? ? dom4j填渠,是一個組織,針對xml解析鸟辅,提供解析器 dom4j

? ? ? ? dom4j不是javase的一部分氛什,想要使用第一步需要怎么做

? ? ? ? ? ? ? ? 導入dom4j提供jar包

? ? ? ? ? ? ? ? 創(chuàng)建一個文件夾lib

? ? ? ? ? ? ? ? 復制jar包到lib下面

? ? ? ? ? ? ? ? 右鍵點擊jar包 ,bulid path--add to bulidpath

? ? ? ? ? ? ? ? 看到j(luò)ar包匪凉, 變成奶瓶樣子枪眉,表示導入成功

? ? 得到document

????????????????SAXReader reader=new SAXReader();

? ? ? ? ? ? ? ? Document document=reader.read(url);

? ? document的父接口是Node

? ? ? ? ? ? ? ? 如果在document里面找不到想要的方法再层,到Node里面去找

? ? document里面的方法 ? getRootElment():獲取根節(jié)點 ? 返回的是Element

? ? Element也是一個接口贸铜,父接口是Node

? ? ? ? ? ? ? ?? Element和Node里面方法:

? ? ? ? ? ? ? ? ? ? ? ? getParent():獲取父節(jié)點

? ? ? ? ? ? ? ? ? ? ? ?? addElement:添加標簽

使用dom4j查詢xml

? ? ? ? ? ? 查詢所有name元素里面的值

? ? ? ? ? ? ? ? ? ? 1.創(chuàng)建解析器

? ? ? ? ? ? ? ? ? ? 2.得到document

? ? ? ? ? ? ? ? ? ? 3.得到根節(jié)點

? ? ? ? ? ? ? ? ? ? 4.得到所有的p1標簽

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? element(qname)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示獲取標簽下面的第一個子標簽

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? qname:標簽的名稱

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elements(qname)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 獲取標簽下面是這個名稱的所有子標簽(一層)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? qname:標簽名稱

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? element();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 獲取標簽下面的所有一層子標簽

? ? ? ? ? ? ? ? ? ? 5.得到name

? ? ? ? ? ? ? ? ? ? 6.得到name里面的值

????????

? ? ?

????????????????

????????????????

????????????????????

????????????




????????

????????????

????????????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聂受,隨后出現(xiàn)的幾起案子蒿秦,更是在濱河造成了極大的恐慌,老刑警劉巖蛋济,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍鳖,死亡現(xiàn)場離奇詭異,居然都是意外死亡碗旅,警方通過查閱死者的電腦和手機渡处,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門镜悉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人医瘫,你說我怎么就攤上這事侣肄。” “怎么了醇份?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵茫孔,是天一觀的道長。 經(jīng)常有香客問我被芳,道長缰贝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任畔濒,我火速辦了婚禮剩晴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侵状。我一直安慰自己赞弥,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布趣兄。 她就那樣靜靜地躺著绽左,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艇潭。 梳的紋絲不亂的頭發(fā)上拼窥,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音蹋凝,去河邊找鬼鲁纠。 笑死,一個胖子當著我的面吹牛鳍寂,可吹牛的內(nèi)容都是我干的改含。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼迄汛,長吁一口氣:“原來是場噩夢啊……” “哼捍壤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鞍爱,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤纲菌,失蹤者是張志新(化名)和其女友劉穎谆刨,沒想到半個月后辟癌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迂曲,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡肉盹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了眠寿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莽鸿。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拜轨,靈堂內(nèi)的尸體忽然破棺而出抽减,到底是詐尸還是另有隱情,我是刑警寧澤橄碾,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布卵沉,位于F島的核電站,受9級特大地震影響法牲,放射性物質(zhì)發(fā)生泄漏史汗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一拒垃、第九天 我趴在偏房一處隱蔽的房頂上張望停撞。 院中可真熱鬧,春花似錦悼瓮、人聲如沸戈毒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埋市。三九已至,卻和暖如春命贴,著一層夾襖步出監(jiān)牢的瞬間道宅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工胸蛛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留培己,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓胚泌,卻偏偏與公主長得像省咨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玷室,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351