• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 小白初學XML(XML基本語法,XML約束(DTD、Schema )、解析(jaxp、DOM4J、Jsoup、selector方法、xpath))

    標簽: xml

    (1)XML介紹

    1 XML的前世今生:

    		  		XML和HTML都是W3C公司創建出來的,XML起初是為了代替他的哥哥HTML,
    			因為在當時HTML已經被各大瀏覽器的玩壞(兼容性過高,導致不規范),才產生
    			了他的弟弟XML,語法相當的嚴格,但是由于XML使用起來沒有HTML簡單好用,
    			XML沒有替代了他哥哥。現在XML主要是用來存儲數據和配置文件相似
    

    2 XML概念:

    	Extensible Markup Language  可擴展標記語言
    	可擴展:標簽都是自定義的
    

    3 XML功能:

    	可以和HTML一樣做網頁的結構(現在大部分已經拋棄這個功能)
    	可以和properties 一樣存儲數據,做配置文件、網絡中傳輸
    

    4 XML和HTML的區別:

    	1 XML的標簽都是自定義的,HTML標簽都是預定義的
    	2 XML語法嚴格,HTML語法松散
    	3 XML是儲存數據,HTML是展示數據的
    

    5 我的第一個XML文件

    <?xml version="1.0"  ?>
    <users>
        <user id="1">
            <name>張三</name>
            <age>20</age>
            <gender>male</gender>
        </user>
        <user id="2">
            <name>李四</name>
            <age>22</age>
            <gender>female</gender>
        </user>
    </users>
    
    	XML文件可以直接拖到瀏覽器上看結果
    

    (2)XML語法

    1 基本語法

    			1  XML的綴名為  .XML
    			2  XML的第一行必須定義文檔聲明  <?xml version="1.0"  ?>
    			3  XML有且僅有一個根標簽   <users></users>
    			4  XML標簽的屬性值必須用雙或單引號括起來
    			5  XML標簽必須正確關閉(要么自閉和標簽<name></name>要么維度標簽<br/>)
    			6  XML標簽區分大小寫
    

    2 組成部分

    1 文檔聲明:

    			 格式: 
    					<? xml version="1.0"  ?>    注意<與?與xml之間不能有空格
    			 屬性列表:    
    					version:  版本號,必須的屬性(1.0是主流版本,通常使用1.0版本)
    					encoding: 編碼方式。告知解析引擎寫該XML文檔的編碼,默認IOS-8859-1
    					standalone:是否獨立  yes 不依賴其他文件  no依賴其他文件
    

    2 指令(了解):

    		結合CSS樣式的,當時為了代替HTML的時候的功能
    		標簽全部被解析,結合css展示其中的數據
    		<?xml-stylesheet type="text/css" href="a.css" ?>
    		導入a.css文件
    

    3 標簽: 標簽名稱自定義

    XML標簽必須正確關閉(要么自閉和標簽<name></name>要么維度標簽<br/>)
    

    4 屬性:

    必須要有引號(單雙都可以),id屬性值唯一
    

    5 文本:

    		有一些轉義字符,和HTML一樣,比如大于號: &gt;
    		CDATD區的數據會被原樣展示:
    			<! [  CDATA[數據]   ] >
    

    (3)XML約束

    1 簡介

    在這里插入圖片描述

    	誰編寫XML文件? 用戶(程序員)、軟件使用者
    	誰解析XML文件? 軟件
        約束文檔:規范XML文檔的書寫規范
    	作為框架使用(程序員):
    			1 能夠在XML文件引入約束文檔
    			2 能夠簡單的讀懂約束文檔
    

    2 約束分類:

    	DTD約束:一種簡單的約束技術,一個.dtd文件
    	Schema約束:一種復雜的約束技術,一個.xsd文件
    

    3 DTD約束:

    (1)怎么為一個XML使用一個DTD約束??
    		  在XML文檔中引入DTD約束:
    		  XML內部dtd:  <!DOCTYPE  根標簽名  [ dtd約束內容 ] >
    		  XML外部dtd:引入一個dtd文件
    		  本地dtd引入XML: <!DOCTYPE  根標簽名  SYSTEM  “dtd文件的位置 ”>
    		  網絡dtd映入XML: <!DOCTYPE  根標簽名 PUBLIC  “dtd名字”  “dtd文件的位置URL ”>
    			(其中SYSTEM表示系統,dtd名字隨便起  該XML文件根標簽必須以該根標簽名)
    
    (2)簡單的閱讀以下.dtd文檔

    在這里插入圖片描述

    在這里插入圖片描述

    (3)dtd約束文檔的缺陷:
    		不能規范標簽里面文本的內容格式
    		Schema約束能夠解決該問題
    

    4 Schema 約束

    	.xsd文件
    	怎么在XML文件中引入Schema約束??
    	看明白.xsd文件Schema約束的基本內容??
    

    (5)解析:

    解析概念:將文檔中的數據加載到內存

    兩種解析思想:

    	1  DOM思想:(和JS的DOM一樣,將標記語言一次性加載到內存,形成一顆dom樹)
    				優點:操作方便,可以對XMl文件進行增刪改查
    				缺點:一次性價值,占內存
    					(適應于PC端,內存較大)
    	2 	SAX思想: 逐行讀取,基于事件驅動
    			優點:幾乎不占內存
    			缺點:只能讀,不能增刪改
    			(適應于手機端)
    

    常見的XML的解析器:

    解析器??? 更具XML解析思想寫出來的解析jar包
    		1.JAXP解析器: sum公司提供的,支持DOM和SAX兩種思想
    			(相當于JAVA官方提供的,性能較差,沒人使用)
    		2.DOM4J解析器:DOM思想實現的一款非常優秀的解析器
    		3.Jsoup解析器:DOM思想實現的一款非常優秀的解析器(主要講解)
    		4.PULL解析器: Android 系統內置的解析器
    

    Jsoup解析器:(可以解析HTML也可以解析XML)

    			先導入jsuop包
    	快速入門:
    			1 導入jsoup的jar包
    			2獲取document對象
    			3獲取對應的元素標簽element對象
    			4獲取數據
    
    //1 導入jar包
    //2 根據文件獲取document對象
    Document document = Jsoup.parse(new File("D:\\IDEA\\源碼\\Text1\\src\\Student.xml"),"utf-8");
    //3獲取對應的元素標簽element對象
    //查找所有的name標簽,Element對象其實就是一個ArrayList數組
    Elements elements = document.getElementsByTag("name");
    //4獲取數據
    Element element =elements.get(1);
    String name = element.text();
    System.out.println(name);
    
    常見的類及其使用方法
    	Jsoup類: 工具類,解析HTML或者XML文檔,返回Document對象
    			*  Parse靜態方法,獲取Document對象,解析傳過來的XML或者HTML文檔.
    					1  parse(File,String)  傳入文件以及編碼方式
    					2  parse(String)  解析XML或者HTML字符串
    					3  parse(URL,int)  解析該網站的HTML/XML,并設置超時時間(毫秒),超時不在訪問
    									(會把整個網頁的代碼全部爬下來)
    	Document類: 文檔的對象,DOM樹結構的根節點
    			*獲取Element、Elements對象
    					1  getElementById(String)  通過id獲取唯一的一個標簽對象
    					2  getElementsByTag(String 標簽名)   根據標簽名獲取對象
    					3  getElementsByAttribute(String 屬性名)  根據屬性名獲取對象
    					4  getElementsByAttributeValue(String 屬性名,String 屬性值) 根據屬性名和屬性值獲取對象
    	Elements類: Element類的集合(相當于ArrayList<Element>)
    	Element類: 標簽元素對象
    			*獲取子元素對象
    					1  getElementById(String)  通過id獲取唯一的一個標簽對象
    					2  getElementsByTag(String 標簽名)   根據標簽名獲取對象
    					3  getElementsByAttribute(String 屬性名)  根據屬性名獲取對象
    					4  getElementsByAttributeValue(String 屬性名,String 屬性值)  根據屬性名和屬性值獲取對象
    			 *獲取屬性值:
    						attr(String 屬性名)  根據屬性名得到屬性值
    			*獲取文本內容:
    						text()   獲取文本內容
    						html()  獲取標簽體內所有的內容
    	 Node類: 節點對象
    						是Element和Document類的父類
    

    快捷查詢方式:

    1 selector(String cssQuery)方法,通過css選擇器查詢標簽元素Element對象

    	(Document對象和Element對象都可以使用)
    

    怎么寫cssQuery字符串??

    	查看JSoup幫助文檔中的Selector類定義的cssQuery定義的語法
    		比如:
    			cssQuery=“name”     		查詢name 標簽對象
    		    cssQuery=”#itcast”		 	查詢ID為itcast的標簽
    		    cssQuery=”name[id=’0001’]”  查詢Id值為0001的name 標簽
    			cssQuery=”student[id=’0001’]  age” 查詢Id值為0001的student標簽的所有age子標簽
    

    2 XPath通過“特殊的語法”查詢標簽元素Element對象

    	XPath 使用路徑表達式來選取 XML 文檔中的節點或者節點集。
    

    怎么使用Xpath??

    	使用Jsoup的Xpath()需要額外導入一個jar包(JsoupXpath.jar)
    		1  根據document對象創建JXDocument對象   JXDocument jxDocument = new JXDocument (document);
    		2  JXDocument對象常見的方法:
    				通過xpath語法查詢標簽元素
    			selN(String xpath)    返回List<JxNode>
    			sel(String xpath)	  返回List<Object>
    			selNOne(String xpath)  返回JxNode
    			selOne(String xpath)	返回Object
    	可以通過JxNode對象轉化為標簽元素對象getElement()方法
    		3 Xpath的查詢語法
    			詳細的Xpath語法查看W3Cshool參考手冊
    					Xpath = “ //student”  查詢所以的student標簽
    					Xpath =”//student//name” 查詢所以的student標簽下的name標簽
    					Xpath = “//student[@id]” 查詢含有id屬性的student標簽
    					Xpath = “//student[@id=’itcast’]” 查詢id為itcast屬性的student標簽
    

    看嗶哩嗶哩黑馬培訓機構視頻:204-217 https://b23.tv/FewvhM

    版權聲明:本文為weixin_44051048原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_44051048/article/details/108602259

    智能推薦

    dom4j 解析XML文件

      <?xml version="1.0" encoding="UTF-8"?> <!-- 手機的根節點 -->   <Phones>   <Brand name="三星">     <Type name="note4">note4</Type...

    dom4j解析xml

      導入jar包后就可以使用dom4j了。簡單的解析xml代碼如下:   這里是用到的test.xml 還有運行結果圖:...

    Dom4J解析XML

     Dom for java 解析步驟及常用API 下載依賴的jar包 下載連接 并導入項目 Dom4J讀取解析XML原理分析: Dom4J的常用方法: SAXReader 對象 xml文件讀取器 Document read(String path);加載執行xml文檔 Document 對象 Element getRootElement() :獲取根元素對象(根標簽) Element 對...

    使用Dom4j解析XML

    轉載自   使用Dom4j解析XML   dom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。dom4j是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件,可以在SourceForge上找到它.        對主流的Ja...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡