天天看點

14.PHP_PHP與XML技術

PHP與XML技術

先把概念粘過來:

14.PHP_PHP與XML技術

先來個基本模闆:

<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<?xml-stylesheet type="text/css" href="Book.css"?>
<!-- 下面的标簽<計算機圖書>就是這個XML文檔的根目錄 -->
<計算機圖書>
<PHP>
<書名>PHPXXX</書名>
<價格 機關="元/本">23.3</價格>
<出版時間>xxx-xxx-xxx</出版時間>
</PHP>
</計算機圖書>      

接下來解釋下細節:

1.XML聲明:

隻能出現一次,必須在第一行。

如<?xml version="1.0" encoding="gb2312" standalone="yes"?>

14.PHP_PHP與XML技術

2.處理指令(如何處理XML文檔的指令)

格式<?處理指令名 處理執行資訊?>

<?xml-stylesheet type="text/css" href="Book.css"?>

14.PHP_PHP與XML技術

3.注釋

XML注釋和HTML注釋一樣<!-- XXXXXX -->

注意問題:

14.PHP_PHP與XML技術

4.XML元素

元素通常必不可少,是文檔内容的基本單元。

<标簽>資料内容</标簽>

14.PHP_PHP與XML技術

5.XML屬性

XML屬性是XML元素中的内容,是可選的。

<标簽 屬性名=”屬性值” 屬性名=”屬性值”>内容</标簽>

14.PHP_PHP與XML技術

6.

CDATA标記

XML中特殊字元需要實體引用(也就是以為某些字元會轉意,是以表示的時候要換個姿勢)

14.PHP_PHP與XML技術

如果多的話可以直接采取CDATA來表示:

<![CDATA[
......
]]>
例子:
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<exam>
<實體引用>這裡必須使用引用"$lt;"、"$gt;"、"$amp;"</實體引用>
<CDATA标簽>
<![CDATA[
這裡可以正常輸出"<"、">"、"$"。
]]>
</CDATA标簽>
</exam>      

7.XML命名空間

<标簽名稱 xmlns:字首名稱=”URL”>
 
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<TUSHU xmlns:frn="http://www.xxx.xxx/xxx">
<frn:English>
<frn:MINGZI>XXX</frn:MINGZI>
<frn:JIAGE>XXX</frn:JIAGE>
</frn:English>
</TUSHU>      

PHP與XML:

1.PHP中建立文檔

<?php
    header('Content-type:text/xml');
    echo '<?xml version="1.0" encoding="gb2312"?>';
    echo '<BOOK>';
    echo '<PHP>';
    echo '<NAME>XXX</NAME>';
    echo '<DATA>XXX-XXX-XXX</DATA>';
    echo '</PHP>';
    echo '</BOOK>';
?>      

2.SimpleXML

PHP對XML格式的文檔操作由很多方法。如XML文法解析函數、DOMXML函數和SimpleXML函數等(PHP5新加入的SimpleXML)。

2.1建立SimpleXML對象

有三個姿勢:

(1)

Simplexml_load_file()函數,将制定的檔案解析到記憶體中。

<?php

    header('Content-type:text/html;charset=utf-8');

    $xml_1 = simplexml_load_file('1.xml');

    print_r($xml_1);

?>

14.PHP_PHP與XML技術

(2)

Simplexml_load_string()函數,将建立的字元串解析到記憶體中。

<?php
    header('Content-type:text/html;charset=utf-8');
$str=<<<XML
<?xml version="1.0" encoding="gb2312"?>
<BOOK>
    <PHP>
        <NAME>XXX</NAME>
        <DATA>XXX-XXX-XXX</DATA>
    </PHP>
</BOOK>
XML;
    $xml_2 = simplexml_load_string($str);
    print_r($xml_2);
?>      
14.PHP_PHP與XML技術

(3)

Simplexml_load_date()函數,将一個使用DOM函數建立的DomDocument對象導入到記憶體中。

<?php
    header('Content-type:text/html;charset=utf-8');
$str=<<<XML
<?xml version="1.0" encoding="gb2312"?>
<BOOK>
    <PHP>
        <NAME>XXX</NAME>
        <DATA>XXX-XXX-XXX</DATA>
    </PHP>
</BOOK>
XML;
    $dom = new domDocument();
    $dom -> loadXML($str);
    $xml_3 = simplexml_import_dom($dom);
    print_r($xml_3);
?>      
14.PHP_PHP與XML技術

2.2周遊所有子元素

<?php
    header('Content-type:text/html;charset=utf-8');
    $str=<<<XML
<?xml version="1.0" encoding="gb2312"?>
<BOOK>
    <PHP>
        <NAME>XXX</NAME>
        <DATA>XXX-XXX-XXX</DATA>
    </PHP>
    <XXX>
        <NAME>XXX</NAME>
        <DATA>XXX-XXX-XXX</DATA>
    </XXX>
</BOOK>
XML;
    $xml = simplexml_load_string($str);
    print_r($xml);
    echo "<br><br><br>";
    foreach($xml->children() as $layer_one){
        print_r($layer_one);
        echo "<br>";
    }
    echo "<br><br>";
    foreach($xml->children() as $layer_one){
        foreach($layer_one->children() as $layer_two) {
            print_r($layer_two);
            echo "<br>";
        }
    }
?>      
14.PHP_PHP與XML技術

2.3周遊所有屬性

<?php
    header('Content-type:text/html;charset=utf-8');
    $str=<<<XML
<?xml version="1.0" encoding="gb2312"?>
<object name='commdoity'>
    <book type="computerbook">
        <bookname name="XXX"/>
    </book>
   <book type="historybook">
        <bookname name="CCC"/>
    </book>
</object>
XML;
    $xml = simplexml_load_string($str);
    foreach($xml->children() as $layer_one){
        foreach($layer_one->attributes() as $name => $vl){
            echo $name."::".$vl."<br>";
        }

        foreach($layer_one->children() as $layer_two){
            foreach($layer_two->attributes() as $name => $vl){
                echo $name."::".$vl."<br>";
            }
        }
        echo '<br><br>';
    }
?>      

2.4通路特定節點和屬性

<?php
    header('Content-type:text/html;charset=utf-8');
    $str=<<<XML
<?xml version="1.0" encoding="gb2312"?>
<object name='commdoity'>
    <book>
        <bookname>AAAA</bookname>
    </book>
   <book>
        <bookname name="BBBB"/>
    </book>
</object>
XML;
    $xml = simplexml_load_string($str);
    echo $xml['name'].'<br>';
    echo $xml->book[0]->bookname.'<br>';
    echo $xml->book[1]->bookname['name'].'<br>';
?>      
14.PHP_PHP與XML技術

    後面還有 修改XML資料,儲存XML文檔,動态建立XML文檔 這些都很好了解,因為時間原因就不一個一個的全都寫一遍了。直接把書上的例子粘過來把。非常簡單。用的時候直接看眼就行了。

2.5修改XML資料

14.PHP_PHP與XML技術

2.6儲存XML文檔

14.PHP_PHP與XML技術

2.7動态建立XML