#XML#JavaWeb學(xué)習(xí)筆記(2020/2/28)

一份乒、XML(Extensible Markup Language)可擴(kuò)展標(biāo)記語(yǔ)言

xml的用處:是用來(lái)寫(xiě)配置文件的澎剥,比起properties文件寫(xiě)的鍵值對(duì)遏弱,xml來(lái)存儲(chǔ)配置文件、更加的功能完善和易于閱讀管理杰刽。

xml與html的區(qū)別:
1肺然、xml 語(yǔ)法嚴(yán)格蔫缸、html語(yǔ)法松散。
2际起、html是展示數(shù)據(jù)用的拾碌、xml是存儲(chǔ)數(shù)據(jù)用的吐葱。
3、html的標(biāo)簽都是預(yù)定義好的倦沧、xml的標(biāo)簽需要我們自己定義唇撬。

二、程序員和計(jì)算機(jī)怎么規(guī)定語(yǔ)言的規(guī)則展融?——>約束

約束有兩種:DTD約束、Scheme約束豫柬。

三告希、DTD約束

內(nèi)部dtd:約束寫(xiě)在xml文件內(nèi)(不推薦,因?yàn)闆](méi)法復(fù)用烧给,而且耦合度高)
外部dtd:將約束的規(guī)則定義在外部的dtd文件中

  • 本地:<!DOCTYPE 根標(biāo)簽名 SYSTEM "dtd文件的位置">
  • 網(wǎng)絡(luò):<!DOCTYPE 根標(biāo)簽名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

DTD文件樣例:

<!ELEMENT note (to, from, heading, body)>    //note標(biāo)簽中有to, from, heading, body子標(biāo)簽
<!ELEMENT to (#PCDATA)>            
<!ELEMENT from (#PCDATA)>        
<!ELEMENT heading (#PCDATA)>   
<!ELEMENT body (#PCDATA)>        

DTD只能規(guī)定要寫(xiě)那些標(biāo)簽燕偶,但是對(duì)于標(biāo)簽的內(nèi)容并無(wú)法做到詳細(xì)的規(guī)定,這時(shí)就需要更強(qiáng)大的Scheme約束來(lái)進(jìn)行規(guī)定础嫡。

四指么、Scheme約束

在xml文件中寫(xiě)上這樣的即可:

<students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns="http://www.itcast.cn/xml"
                    xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

五、解析XML

有兩種解析方式:
①榴鼎、一次解析全文本——DOM方式

  • 將XML一次性加載進(jìn)內(nèi)存伯诬,形成一顆DOM樹(shù),缺點(diǎn)是可能比較占內(nèi)存巫财。
  • 可以對(duì)XML文檔進(jìn)行CRUD(增查改刪)操作盗似。
    ②、一行一行解析——SAX方式
  • 逐行解析平项,基于事件驅(qū)動(dòng)的赫舒。
  • 雖然不占內(nèi)存,但是不能進(jìn)行CUD(增改刪)操作闽瓢,只能查詢(xún)接癌。

六、常見(jiàn)的解析引擎

  1. JAXP:sun公司提供的解析器扣讼,支持dom和sax兩種思想
  2. DOM4J:一款非常優(yōu)秀的解析器
  3. Jsoup:jsoup 是一款Java 的HTML解析器缺猛,可直接解析某個(gè)URL地址、HTML文本內(nèi)容届谈。它提供了一套非常省力的API枯夜,可通過(guò)DOM,CSS以及類(lèi)似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)艰山。
  4. PULL:Android操作系統(tǒng)內(nèi)置的解析器湖雹,sax方式的。

Jsoup的使用:

步驟:

  1. 導(dǎo)入jar包
  2. 獲取Document對(duì)象
    • 使用ClassLoader加載xml到內(nèi)存中曙搬,再用Jsoup的parse方法返回Document對(duì)象摔吏。
      parse?(File in, String charsetName):解析xml或html文件的鸽嫂。
      parse?(String html):解析xml或html字符串
      parse?(URL url, int timeoutMillis):通過(guò)網(wǎng)絡(luò)路徑獲取指定的html或xml的文檔對(duì)象
  String path=JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
  
  Document document = Jsoup.parse(new File(path), "utf-8");
  1. 獲取對(duì)應(yīng)的標(biāo)簽Element對(duì)象
    • 使用Document對(duì)象相關(guān)get方法。
      getElementById?(String id):根據(jù)id屬性值獲取唯一的element對(duì)象
      getElementsByTag?(String tagName):根據(jù)標(biāo)簽名稱(chēng)獲取元素對(duì)象集合
      getElementsByAttribute?(String key):根據(jù)屬性名稱(chēng)獲取元素對(duì)象集合
      getElementsByAttributeValue?(String key, String value):根據(jù)對(duì)應(yīng)的屬性名和屬性值獲取元素對(duì)象集合
      \color{red}{元素對(duì)象集合——當(dāng)做ArrayLis<Element>集合使用就好}
  2. 獲取數(shù)據(jù)
  • String attr(String key):根據(jù)屬性名稱(chēng)獲取屬性值
  • String text():獲取文本內(nèi)容
  • String html():獲取標(biāo)簽體的所有內(nèi)容(包括字標(biāo)簽的字符串內(nèi)容)

如何快捷查詢(xún):可以使用selector選擇器征讲,具體用法查詢(xún)W3C手冊(cè)即可据某,用法和CSS的選擇器挺像的。

注意:使用Jsoup的Xpath需要額外導(dǎo)入jar包诗箍。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末癣籽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滤祖,更是在濱河造成了極大的恐慌筷狼,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匠童,死亡現(xiàn)場(chǎng)離奇詭異埂材,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)汤求,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)俏险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扬绪,你說(shuō)我怎么就攤上這事竖独。” “怎么了勒奇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵预鬓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赊颠,道長(zhǎng)格二,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任竣蹦,我火速辦了婚禮顶猜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痘括。我一直安慰自己长窄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布纲菌。 她就那樣靜靜地躺著挠日,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翰舌。 梳的紋絲不亂的頭發(fā)上嚣潜,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音椅贱,去河邊找鬼懂算。 笑死只冻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的计技。 我是一名探鬼主播喜德,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼垮媒!你這毒婦竟也來(lái)了舍悯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睡雇,失蹤者是張志新(化名)和其女友劉穎贱呐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體入桂,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年驳阎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抗愁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呵晚,死狀恐怖蜘腌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饵隙,我是刑警寧澤撮珠,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站金矛,受9級(jí)特大地震影響芯急,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驶俊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一娶耍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饼酿,春花似錦榕酒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至药版,卻和暖如春辑舷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刚陡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工惩妇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留株汉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓歌殃,卻偏偏與公主長(zhǎng)得像乔妈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氓皱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • [TOC] 第一章:XML概述 概念 XML( Extensible Markup Language )路召,可擴(kuò)展的...
    雷噠噠閱讀 238評(píng)論 0 1
  • 一股淡、XML介紹 XML 指可擴(kuò)展標(biāo)記語(yǔ)言(EXtensible Markup Language),也是一種標(biāo)記語(yǔ)言...
    圣賢與無(wú)賴(lài)閱讀 1,114評(píng)論 2 3
  • XML基本概念 Extensible Markup Language 可擴(kuò)展標(biāo)記語(yǔ)言 可擴(kuò)展:標(biāo)簽都是自定義的 功...
    So_ProbuING閱讀 290評(píng)論 0 0
  • 概念:Extensible Markup Language 可擴(kuò)展標(biāo)記語(yǔ)言 一隙轻、特點(diǎn)及功能 功能:存儲(chǔ)數(shù)據(jù)配置文件...
    哈哈大圣閱讀 325評(píng)論 0 2
  • XML: 概念:Extensible Markup Language 可擴(kuò)展標(biāo)記語(yǔ)言可擴(kuò)展:標(biāo)簽都是自定義的埠帕。功能...
    JayMeWangGL閱讀 202評(píng)論 0 0