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

首頁 > 開發 > PHP > 正文

PHP如何讀取xml文件?php讀取xml文檔例子

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

PHP如何讀取xml文件?有不少朋友不知道這個問題,其實php對于xml文檔是有專門的函數來操作了,下面我們就來舉幾個php讀取xml例子希望能給各位帶來幫助.

一,什么是xml,xml有什么用途

XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言),Xml是Internet環境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具,擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數據要占用更多的空間,但XML極其簡單易于掌握和使用.

XML的用途很多,可以用來存儲數據,可以用來做數據交換,為很多種應用軟件提示數據等等.

二,php讀取xml的方法

xml源文件,代碼如下:

  1. <?xml version="1.0 encoding="UTF-8"?> 
  2. <humans> 
  3. <zhangying> 
  4. <name>張映</name> 
  5. <sex>男</sex> 
  6. <old>28</old> 
  7. </zhangying> 
  8. <tank> 
  9. <name>tank</name> 
  10. <sex>男</sex> 
  11. <old>28</old> 
  12. </tank> 
  13. </humans> 

1)DOMDocument讀取xml,代碼如下:

  1. <?php  
  2. $doc = new DOMDocument();  
  3. $doc->load('person.xml'); //讀取xml文件  
  4. $humans = $doc->getElementsByTagName( "humans" ); //取得humans標簽的對象數組  
  5. foreach$humans as $human )  
  6. //開源代碼Vevb.com 
  7. $names = $human->getElementsByTagName( "name" ); //取得name的標簽的對象數組  
  8. $name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>  
  9. $sexs = $human->getElementsByTagName( "sex" );  
  10. $sex = $sexs->item(0)->nodeValue;  
  11. $olds = $human->getElementsByTagName( "old" );  
  12. $old = $olds->item(0)->nodeValue;  
  13. echo "$name - $sex - $old\n";  
  14. }  
  15. ?> 

2)simplexml讀取xml,代碼如下:

  1. <?php  
  2. $xml_array=simplexml_load_file('person.xml'); //將XML中的數據,讀取到數組對象中  
  3. foreach($xml_array as $tmp){  
  4. echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";  
  5. }  
  6. ?> 

如果你使用 curl 獲取的 xml data

$xml = simplexml_load_string($data);

$data['tk'] = json_decode(json_encode($xml),TRUE);

如果是直接獲取 URL 數據的話

$xml = simplexml_load_file($data);

$data['tk'] = json_decode(json_encode($xml),TRUE);

先把 simplexml 對象轉換成 json,再將 json 轉換成數組.

3)用php正則表達式來記取數據,代碼如下:

  1. <?php  
  2. $xml = "";  
  3. $f = fopen('person.xml''r');  
  4. while$data = fread$f, 4096 ) ) {  
  5. $xml .= $data;  
  6. }  
  7. fclose( $f );  
  8. // 上面讀取數據  
  9. preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s"$xml$humans ); //匹配最外層標簽里面的內容  
  10. foreach$humans[1] as $k=>$human )  
  11. {  
  12. preg_match_all( "/\<name\>(.*?)\<\/name\>/"$human$name ); //匹配出名字  
  13. preg_match_all( "/\<sex\>(.*?)\<\/sex\>/"$human$sex ); //匹配出性別  
  14. preg_match_all( "/\<old\>(.*?)\<\/old\>/"$human$old ); //匹配出年齡  
  15. //開源代碼Vevb.com 
  16. foreach($name[1] as $key=>$val){  
  17. echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;  
  18. }  
  19. ?> 

4)xmlreader來讀取xml數據,代碼如下:

  1. <?php  
  2. $reader = new XMLReader();  
  3. $reader->open('person.xml'); //讀取xml數據  
  4. $i=1;  
  5. while ($reader->read()) { //是否讀取  
  6. if ($reader->nodeType == XMLReader::TEXT) { //判斷node類型  
  7. if($i%3){  
  8. echo $reader->value; //取得node的值  
  9. }else{  
  10. echo $reader->value."<br>" ;  
  11. }  
  12. $i++;  
  13. }  
  14. }  
  15. ?> 

三,小結

讀取xml的方法很多,簡單舉幾個,上面四種方法都是可以把標簽中的數據讀出來,但是他們的測重點不同,前三種方法的讀取xml的function的設計重點,是為了讀取標簽中的值,相當于jquery中的text()方法,而xmlreader呢他就不太一樣,他的重點不在讀取標簽中的值,而讀取標簽的屬性,把要傳送的數據,都放在屬性中,不過我上面寫的那個方法還是取標簽中的值,因為xml文件已經給定了,我就不想在搞xml文件出來了.

舉個例子解釋一下,代碼如下:

<data name=’張映’ sex=’男’ old=’28′></data>

xmlreader的設計重點是為了讀data里面的name sex old的值,而讀取的內容就比較麻煩了,他相當于jquery中attr(”);這個東西.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长兴县| 德钦县| 怀来县| 新营市| 运城市| 临洮县| 江油市| 东方市| 怀来县| 灵丘县| 安庆市| 土默特左旗| 德令哈市| 宜兰市| 岚皋县| 武汉市| 万州区| 沂源县| 建昌县| 平利县| 岱山县| 乌拉特前旗| 泰宁县| 上思县| 凉城县| 焦作市| 红原县| 利辛县| 江山市| 庄河市| 沙洋县| 玉环县| 徐水县| 革吉县| 温州市| 山阴县| 随州市| 宁陕县| 历史| 新巴尔虎左旗| 商洛市|