程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP讀取xml方法介紹

PHP讀取xml方法介紹

編輯:關於PHP編程

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

      XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標准通用標記語言)。Xml是Internet環境中跨平台的,依賴於內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數據要占用更多的空間,但XML極其簡單易於掌握和使用。
    XML的用途很多,可以用來存儲數據,可以用來做數據交換,為很多種應用軟件提示數據等等。
    二,php讀取xml的方法
    xml源文件
    代碼如下:
    <?xml version="1.0 encoding="UTF-8"?>
    <humans>
    <zhangying>
    <name>張映</name>
    <sex>男</sex>
    <old>28</old>
    </zhangying>
    <tank>
    <name>tank</name>
    <sex>男</sex>
    <old>28</old>
    </tank>
    </humans>


    1)DOMDocument讀取xml
    代碼如下:
    <?php
    $doc = new DOMDocument();
    $doc->load('person.xml'); //讀取xml文件
    $humans = $doc->getElementsByTagName( "humans" ); //取得humans標簽的對象數組
    foreach( $humans as $human )
    {
    $names = $human->getElementsByTagName( "name" ); //取得name的標簽的對象數組
    $name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>
    $sexs = $human->getElementsByTagName( "sex" );
    $sex = $sexs->item(0)->nodeValue;
    $olds = $human->getElementsByTagName( "old" );
    $old = $olds->item(0)->nodeValue;
    echo "$name - $sex - $oldn";
    }
    ?>


    2)simplexml讀取xml
    代碼如下:
    <?php
    $xml_array=simplexml_load_file('person.xml'); //將XML中的數據,讀取到數組對象中
    foreach($xml_array as $tmp){
    echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";
    }
    ?>


    3)用php正則表達式來記取數據
    代碼如下:
    <?php
    $xml = "";
    $f = fopen('person.xml', 'r');
    while( $data = fread( $f, 4096 ) ) {
    $xml .= $data;
    }
    fclose( $f );
    // 上面讀取數據
    preg_match_all( "/<humans>(.*?)</humans>/s", $xml, $humans ); //匹配最外層標簽裡面的內容
    foreach( $humans[1] as $k=>$human )
    {
    preg_match_all( "/<name>(.*?)</name>/", $human, $name ); //匹配出名字
    preg_match_all( "/<sex>(.*?)</sex>/", $human, $sex ); //匹配出性別
    preg_match_all( "/<old>(.*?)</old>/", $human, $old ); //匹配出年齡
    }
    foreach($name[1] as $key=>$val){
    echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;
    }
    ?>


    4)xmlreader來讀取xml數據
    代碼如下:
    <?php
    $reader = new XMLReader();
    $reader->open('person.xml'); //讀取xml數據
    $i=1;
    while ($reader->read()) { //是否讀取
    if ($reader->nodeType == XMLReader::TEXT) { //判斷node類型
    if($i%3){
    echo $reader->value; //取得node的值
    }else{
    echo $reader->value."<br>" ;
    }
    $i++;
    }
    }
    ?>
    三,小結
    讀取xml的方法很多,簡單舉幾個。上面四種方法都是可以把標簽中的數據讀出來,張映.但是他們的測重點不同,前三種方法的讀取xml的function的設計重點,是為了讀取標簽中的值,相當於jquery中的text()方法,而xmlreader呢他就不太一樣,他的重點不在讀取標簽中的值,而讀取標簽的屬性,把要傳送的數據,都放在屬性中(不過我上面寫的那個方法還是取標簽中的值,因為xml文件已經給定了,我就不想在搞xml文件出來了)。
    舉個例子解釋一下,
    <data name='張映' sex='男' old='28′></data>
    xmlreader的設計重點是為了讀data裡面的name sex old的值,而讀取的內容就比較麻煩了。他相當於jquery中attr(”);這個東西。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved