国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php xml讀寫操作實現代碼

2024-05-04 21:58:38
字體:
來源:轉載
供稿:網友

文章從最基礎的什么是xml到最終于用實例告訴你如何利用php來讀,寫,刪除,編輯xml文檔,是一篇不錯的xml講解文檔,有需要的同學可以收藏本文章.

什么是XML?

XML(eXtensible Markup Language)是國際標準化組織的標準通用標記語言SGML的子集,由以下規范組成:

可擴展樣式語言(eXtensible Sytle Language , XSL) 

XML鏈接語言(XML Linking Language,包括Xpath、Xlink和Xpointer) 

XML名稱空間(XML Namespace) 

在PHP5之前的版本對XML的處理存在很多的問題,例如XML工具之間只具有簡單的關聯、每個工具不能一起協同工作等,PHP5中的新XML擴展具有下列特點:

能夠像一個整體一樣協調工作,是一個標準化的XML庫:libxml2,完全遵循W3C規范,更有效地處理數據,是你工作中合適的XML工具 

HTML和XML區別與聯系?

HTML和XML都是SGML的子集,所以他們有很大的相似性,下面是XML相對于HTML具有的獨特性:

可擴展性,用以定義需要的新標記。這對于今天的web是很有意義的 

結構,用于表示任意復雜程度的數據。從某種意義上說是一個小型的關系數據庫 

校驗,用以檢查數據的結構正確性。通過DTD約束可以達到這一目的。 

媒體無關性,以多種格式發布內容,網頁、手機顯示的wml、其他媒體終端的顯示等,廠商和平臺中立,數據的表示與內容分離(這是與html本質區別,但現在流行的DIV+CSS設計思路與這種近似).

XML的元素區分大小寫,任何元素都需要有結束標記,XML只有一個根元素,屬性必須加上引號.

一個完整的XML長什么樣子,代碼如下:

  1. <?xml version="1.0"?> 
  2. <shows> 
  3.     <show> 
  4.         <name>Simpsons</name> 
  5.         <channel>FOX</channel> 
  6.         <start>8:00 PM</start> 
  7.         <duration>30</duration> 
  8.     </show> 
  9.     <show> 
  10.         <name>Law & Order</name> 
  11.         <channel>NBC</channel> 
  12.         <start>8:00 PM</start> 
  13.         <duration>60</duration> 
  14.     </show> 
  15. </shows> 

形式良好的XML文檔須具備下列特征:

每一個元素有一個開始和結束標記,文檔有且只有一個根元素,其他的所有元素都是它的子元素,正確的格式化空元素,標記的大小寫匹配,正確的嵌套,屬性值必須用引號,實體在引用之前必須聲明,實體不能循環指向自身.

通過DOM生成XML,代碼如下:

  1. // 創建一個新的文檔$dom = new DOMDocument('1.0'); 
  2. // 創建一個根元素<book>并將其添加到文檔$book = $dom->appendChild($dom->createElement('book')); 
  3. // 創建一個title子元素,并添加到$book中 
  4. $title = $book->appendChild($dom->createElement('title')); 
  5. // 設置title元素的文本及cover屬性 
  6. $title->appendChild($dom->createTextNode('PHP Cookbook')); 
  7. $title->setAttribute('cover''soft'); 
  8. // 創建并將author元素添加到$book中 
  9. $sklar = $book->appendChild($dom->createElement('author')); 
  10. //添加文本到author節點$sklar->appendChild($dom->createTextNode('Sklar')); 
  11. //開源代碼Vevb.com 
  12. $trachtenberg = $book->appendChild($dom->createElement('author')); 
  13. $trachtenberg->appendChild($dom->createTextNode('Trachtenberg')); 
  14. // 輸出完美格式化的XML文檔$dom->formatOutput = true; 
  15. echo $dom->saveXML();//輸出內容如下: 
  16. <?xml version="1.0"?> 
  17. <book?> 
  18.   <cover="soft">PHP Cookbook</title> 
  19. </book>  

用PHP解析已經存在的XML文件,常用有三種方式來解析XML文件,對于簡單文件采用SimpleXML,對于復雜的XML文件采用DOM擴展來實現,對于大型XML文件采用XMLReader擴展來實現.

XML示例文件如下address-book.xml,代碼如下:

  1. <?xml version="1.0"?> 
  2. <address-book> 
  3.     <person id="1"> 
  4.         <!--David Sklar--> 
  5.         <firstname>David</firstname> 
  6.         <lastname>Sklar</lastname> 
  7.         <city>New York</city> 
  8.         <state>NY</state> 
  9.         <email>sklar@php.net</email> 
  10.     </person> 
  11.  
  12.     <person id="2"> 
  13.         <!--Adam Trachtenberg--> 
  14.         <firstname>Adam</firstname> 
  15.         <lastname>Trachtenberg</lastname> 
  16.         <city>San Francisco</city> 
  17.         <state>CA</state> 
  18.         <email>amt@php.net</email> 
  19.     </person> 
  20. </address-book> 

通過SimpleXML方式,代碼如下:

  1. $sx = simplexml_load_file('address-book.xml'); 
  2. foreach ($sx->person as $person) { 
  3.     $firstname_text_value = $person->firstname; 
  4.     $lastname_text_value = $person->lastname; 
  5.     print "$firstname_text_value $lastname_text_valuen"; 

通過DOM擴展,代碼如下:

  1. $dom = new DOMDocument; 
  2. $dom->load('address-book.xml'); 
  3.  
  4. foreach ($dom->getElementsByTagname('person') as $person) { 
  5.     $firstname = $person->getElementsByTagname('firstname'); 
  6.     $firstname_text_value = $firstname->item(0)->firstChild->nodeValue; 
  7.  
  8.     $lastname = $person->getElementsByTagname('lastname'); 
  9.     $lastname_text_value = $lastname->item(0)->firstChild->nodeValue; 
  10.  
  11.     print "$firstname_text_value $lastname_text_valuen"; 

通過XMLReader擴展,代碼如下:

  1. $reader = new XMLReader(); 
  2. $reader->open('card-catalog.xml'); 
  3.  
  4. while ($reader->read()) { 
  5.     if ($reader->nodeType == XMLREADER::ELEMENT && $reader->localName == 'author') { 
  6.         $reader->read(); 
  7.         print $reader->value . "n"
  8.     } 

在SimpleXML和DOM擴展中都有XPath,代碼如下:

  1. //SimpleXml示例 
  2. $emails = $s->xpath('/address-book/preson/email'); 
  3.  
  4. //DOM擴展示例 
  5. $xpath = new DOMXPath($dom); 
  6. $email = $xpath->query('/address-book/preson/email');//驗證XML文檔是否合法 

在PHP中,DOM擴展支持基于DTD,XML Schema和RelaxNG的驗證,而SimpleXML則只提供了XML Schema驗證.

XML內容為UTF-8格式

如果數據來源為其他格式,需要經過編碼為UTF-8格式,下面是通過iconv庫進行轉換的示例,代碼如下:

$utf_8 = iconv('ISO-8859-1', 'UTF-8', $iso_8859_1);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河曲县| 东平县| 兴化市| 东宁县| 金湖县| 观塘区| 灵丘县| 湛江市| 平阴县| 定襄县| 宜州市| 武宁县| 封丘县| 吉木乃县| 蕉岭县| 西宁市| 汉阴县| 武邑县| 奈曼旗| 商城县| 长丰县| 韩城市| 安庆市| 金沙县| 岳池县| 砀山县| 建昌县| 佛教| 平山县| 海林市| 萨迦县| 宝坻区| 凤山市| 南开区| 普定县| 昌江| 张家界市| 黄冈市| 梁平县| 澳门| 新泰市|