摘要:聲明語句是可選部分如果存在需要放在文檔的第一行所謂的文檔聲明就是告訴解析器當前文檔格式版本號以及編碼格式。所有的元素都必須是成對閉合標簽非閉合標簽是非法的,解析器將報錯,不無正常解析標簽對大小寫敏感必須頭尾標簽一致。
前言
一直想系統性的學XML,就沒時間學,今晚抽出幾個小時時間學完了XML。過幾天再過來看看,背一背應該就差不多,記得東西較多,沒什么難理解的。
XML數據傳輸格式 第一章 XML概述 1.1 引入當我們看到 XML 標準突飛猛進的開發進度,以及大批的軟件開發商采用這個標準的日新月異的速度時,真的是不禁感嘆這真是令人嘆為觀止。
目前,XML 在 Web 中起到的作用不會亞于一直作為 Web 基石的 HTML。
XML 無所不在。XML 是各種應用程序之間進行數據傳輸的最常用的工具,并且在信息存儲和描述領域變得越來越流行。
XML的主要用途有哪些?
1.程序之間的數據傳輸通訊(可以是跨語言傳輸)2.配置文件config.xml
3.存儲數據,充當小型數據庫
優勢:
規范數據格式,是數據具有結構性,易讀易處理1.2 什么是XML
XML 指可擴展標記語言(eXtensible Markup Language),被設計用來傳輸和存儲數據;XML 需要自行定義標簽,且標簽名稱具有自我描述性;XML 是 W3C 推薦的數據傳輸存放標準。
XML和HTML的區別?
1.html標簽不能自定義,XML只能自定義標簽。第二章 XML的基本語法 2.1 語法規則2.html語法要求不嚴格,xml對于語法的要求非常嚴格,標簽必須是閉合的。
3.XML 被設計用來傳輸和存儲數據,其焦點是數據內容;HTML 被設計用來顯示數據,其焦點是數據的外觀呈現。
1.XML 文檔必須有根元素,根元素是所有其他元素的父元素。
2.XML聲明語句是可選部分,如果存在需要放在文檔的第一行
所謂的文檔聲明就是告訴解析器當前文檔格式、版本號以及編碼格式。
3.所有的 XML 元素都必須是成對閉合標簽;非閉合標簽是非法的,解析器將報錯,不無正常解析.
4.XML 標簽對大小寫敏感,必須頭尾標簽一致。
5.XML標簽不允許有交叉嵌套,也就是父子標簽關系不能交叉嵌套。
6.XML標簽名不要使用特殊字符,盡量只用數字字母下劃線。
7.XML 中的注釋與HTML中注釋一個語法格式。
8.實體引用 & 特殊字符
在 XML 中,一些字符擁有特殊的意義,如果您把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始46 < 100 這樣會產生 XML 錯誤;為了避免錯誤,要用實體引用來代替特殊字符,格式與HTML中的實體字符用法一樣
實體引用 | 實體字符 | 含義 |
---|---|---|
< | < | 小于-less than |
> | > | 大于-greater than |
& | & | 與--ampersand |
&apos | " | 單引號-apostrophe |
" | " | 雙引號-quotation mark |
XML 元素中,可以隨意添加一個或多個屬性,前提是
屬性值一定要用引號(單引號或雙引號)引起來屬性名稱的命名規范與元素的命名規范相同
元素中的屬性是不允許重復的
屬性也是用來存儲數據信息的但實際開發經驗是 在HTML中,屬性用起來很便利,而在 XML 中,應該盡量避免使用屬性,原因是
1.一個屬性不能包含多個值(元素可以)2.屬性值不能是結構化數據(元素可以)
3.屬性不容易擴展(為未來的變化)
4.屬性難以閱讀和維護。
總結:將數據放在屬性中和放在子元素中,目的都是為了傳輸數據,而子元素更加容易被解析,更好維護,更便于引用。
2.3 CDATA要處理大量特殊字符時,不能再用實體引用來處理了(主要是太麻煩,工作量大)可以使用CDATA將數據包裹就可以按原格式輸出。
格式:5,問:c和d那個更好看? ]]>
實體引用和CDATA的使用時機:
1.對于內容比較少的情況,可以使用實體引用對特殊字符進行直接替換操作。第三章 使用PHP解析XML文檔2.對于內容比較多的情況,建議采用CDATA區段。
在PHP5版本以后,其提供了一個非常非常強大的類庫,SimpleXML類庫,專門用于實現對XML文檔的解析操作。PHP中使用這個類庫來處理XML數據。3.1 XML解析原理
XML在解析時一共要經歷三個步驟:
3.2 SimpleXML類庫讀取XML文檔到內存
2.形成DOM樹結構(DOM樹可以簡單理解文檔的父子結構)
3.生成SimpleXML對象
語法:simplexml_load_file("test.xml");
aklman 20 男 ak 22
$xml=simplexml_load_file("test.xml");//引入文件并讀取 var_dump($xml);//輸出,輸出個格式就是一個對象
1.如果當前讀取的節點是對象就通過->來進行訪問;3.3 遍歷XML數據2.如果當前讀取的節點是數組就通過[]來進行訪問;
1.foreach循環遍歷
$xml=simplexml_load_file("test.html); foreach($xml->man as $v){ echo "Name:".$v->name."Age:".$v->age."
"; }
2.for循環遍歷
$xml=simplexml_load_file("test.html); $length=count($xml); for($i=0;$i<$length;$i++){ echo $xml->man[$i]->name; }
讀取節點的屬性時XML屬性要加到父節點,PHP才能解析
$xml=simplexml_load_file("test.xml"); echo $xml->man[1]->attributes()->sex; //attributes()方法是用來獲取節點屬性, //內存中節點屬性存放在attributes中,它是一個以為數組,可以使用attributes()方法獲取3.4 使用SImpleXML增加節點
$xml=simplexml_load_file("test.html); $man= //創建添加子節點 $man = $xml->addChild("man"); //為節點添加屬性 $man->addAttribute("sex","女"); //創建添加子節點及節點值 $man->addChild("name","aklman"); $man->addChild("age","23"); var_dump($xml);//打印,已經添加到內存 $xml->asXML("test1.xml");//保存數據進XML文件,沒有文件,則創建;3.5 案例
查詢手機歸屬地案例,數據來源聚合網
//接受前臺提交的數據 $tel = $_GET["num"]; //組裝請求地址 $url = "http://v.juhe.cn/telephone/index?telephoneNumber=".$tel."&dtype=xml&format=&key=810c3b2c488bc37d5f521196d8799a7211";//地址已經打亂了,需要從聚合網購買 //發送請求并接受返回的數據 $s = file_get_contents($url); // echo $s; //打印返回的XML數據 //使用 simplexml_load_string 函數讀入并解析XML數據 $xml = simplexml_load_string($s); //找到并打印我們想要的數據 echo "歸屬省:".$xml->result->place->city111."第四章 Xpath語言 4.1 概述
"; echo "歸屬城市:".$xml->result->place->city."
";
XPath是一門在 XML 文檔中查找信息的語言,XPath可用來在 XML 文檔中對元素和屬性進行遍歷。4.2 使用及語法
使用注意事項:
1.使用絕對路徑實現數據查詢
$xml = simplexml_load_file("user.xml"); //按節點的絕對路徑查找 $data = $xml->xpath("/user/man/name");//返回數組 foreach($data as $v){ echo $v."
"; } /* *如果路徑以斜線 / 開始, 那么該路徑就表示到一個元素的絕對路徑, *絕對路徑實現數據查詢必須一級一級的查詢下去,不能越級。 */
2.使用相對路徑實現數據查詢
$xml = simplexml_load_file("user.xml"); //按節點的相對路徑查找 $data = $xml->xpath("http://name");//返回數組 foreach($data as $v){ echo $v."
"; } /* *如果路徑以雙斜線 // 開頭, 則表示選擇文檔中所有滿足雙斜線//之后規則的元素(無論層級關系) */
3.使用*來匹配所有節點
$xml = simplexml_load_file("user.xml"); //匹配man節點下的所有元素節點。 $data = $xml->xpath("http://man/*");//返回數組 foreach($data as $v){ echo $v."
"; }
4.使用[]方括號的形式來實現數據查詢
$xml = simplexml_load_file("user.xml"); //匹配man節點下的最后一個節點。 $data = $xml->xpath("http://man[last()]");//返回數組 var_dump($data); echo $data[0]->name; //man[1] : 獲取第一個man元素 //man[last()]:獲取最后一個man元素 //man[age > 200] :獲取age>200的man節點 /* *方塊號里的表達式可以進一步的指定元素, 其中數字表示元素在選擇集里的位置 *默認從1開始,而last()函數則表示選擇集中的最后一個元素,括號內還可以放置表達式 */
5.使用屬性來獲取元素
$xml = simplexml_load_file("user.xml"); //匹配man節點下含有sex屬性的節點。 $data = $xml->xpath("http://man[@sex]");//返回數組 var_dump($data); echo $data[0]->name;參考資料
W3school
菜鳥教程
XML編程與應用教程(第2版)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/51974.html
摘要:聲明語句是可選部分如果存在需要放在文檔的第一行所謂的文檔聲明就是告訴解析器當前文檔格式版本號以及編碼格式。所有的元素都必須是成對閉合標簽非閉合標簽是非法的,解析器將報錯,不無正常解析標簽對大小寫敏感必須頭尾標簽一致。 前言 一直想系統性的學XML,就沒時間學,今晚抽出幾個小時時間學完了XML。過幾天再過來看看,背一背應該就差不多,記得東西較多,沒什么難理解的。 XML數據傳輸格式 第一...
摘要:以指定模式分割字符串,返回結果為數組。為什么牢記,有什么用看代碼查找連續的相同的數字或者內容是用子表達式只有字表達是中匹配的內容才保存到緩存,這種行為叫捕獲。 前言 正則表達式之所以強大,是因為其能實現模糊匹配,精確匹配沒有任何價值。 正則表達式學習筆記 第一章 JavaScript原型對象與原型鏈 1.1 正則表達式概念 RegExp:是正則表達式(regular expressio...
摘要:比較運算符,操作數都不是類型時操作數中只有類型和類型,或者其中有一個是轉換為運算條件運算轉換為號運算,其中一個操作符為字符串比較運算,其中一個操作符為字符串 要求:學習,并背誦全文 原始值 類型 Undefined Null String Boolean Number 值 undefined null 所有字符串 true false 所有數字/NaN 引用類型 Objec...
摘要:學習筆記工作以來就一直在用各種框架,比如,這些,向外提供接口都很方便,但是一直在想它的內部是怎樣對外暴露服務的,正好之前學習基礎的時候也沒好好看這塊,抽個時間學習總結一下,也能更好的理解掌握現在的框架。 Servlet學習筆記 工作以來就一直在用各種web框架,比如SpringMVC,Spring Cloud這些,向外提供接口都很方便,但是一直在想它的內部是怎樣對外暴露服務的,正好之前...
摘要:實戰高并發程序設計推薦豆瓣評分書的質量沒的說,推薦大家好好看一下。推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。 很早就想把JavaGuide的書單更新一下了,昨晚加今天早上花了幾個時間對之前的書單進行了分類和補充完善。雖是終極版,但一定還有很多不錯的 Java 書籍我沒有添加進去,會繼續完善下去。希望這篇...
閱讀 3140·2021-09-28 09:36
閱讀 3685·2021-09-08 09:45
閱讀 1793·2021-09-01 10:43
閱讀 3470·2019-08-30 12:44
閱讀 3345·2019-08-29 17:25
閱讀 1369·2019-08-29 11:03
閱讀 1991·2019-08-26 13:36
閱讀 693·2019-08-23 18:24