PHP 自學之路—–XML編程(Xpath技術,simpleXml技術)基礎入門

   XPath的設計的核心思想,可以通過xpath迅速簡介的定位到你希望查找的節點。主要目的是描述節點相對其他節點的位置,可以取得所有符合條件的節點,成為[位置路徑]。

     Xapth主要用來在XML文檔中查詢信息的工具,通過使用路徑表達式可以解析XML文件,讀取XML文件中的數據

下面以案例來介紹,XML 文件如下(simplexml.xml):

[php]  

<?xml version="1.0" encoding="UTF-8"?>  

<books>  

    <book house="qinghuachubanshe">  

        <code>sb001</code>  

        <price>200</price>  

        <author>xiaoming</author>  

        <title>tianlongbabu</title>  

    </book>  

    <book house="beidachubanshe">  

        <code>sb002</code>  

        <price>400</price>  

        <author>daming</author>  

        <title>xiaoaojianghu</title>  

    </book>  

</books>  

 

PHP 代碼如下:

[php]  

<?php  

    //1 創建DOMDocument對象  

    $dom = new DOMDocument("1.0", "UTF-8");  

      

    //2 加載Xml文件  

    $dom->load("simplexml.xml");  

      

    //3 轉成DomXPath對象  

    $xpath = new DOMXPath($dom);  

      

    //4 查找工作  

      

    $node_list = $xpath->query("/books/book/title");  

    echo "一共有".$node_list->length."個<br/>";  

    for($i=0; $i<$node_list->length;$i++){  

          

         $node = $node_list->item($i);  

        // var_dump($node_list);  

        /*foreach ($node as $key=>$val){ 

            echo  

<h6><a name="t6"></a>       <span style="font-weight: normal;">} */</span></h6>      echo $node->nodeName.":".$node->nodeValue."<br/>";  

    }  

?>  

輸入如下:

一共有2個

title:tianlongbabu

title:xiaoaojianghu

 

想更深入得瞭解XPath的使用, 

simpleXml

      simpleXMl的核心思想:以面向對象的方法來操作Xml文件。simpleXml是比較簡單的方式,通常會和XPath配合使用,

 

[php] 

<?php  

  

    //裝載方式1 ‘裝載一個Xml文件  

   // $lib = simplexml_load_file("simplexml.xml");  

    //2    DOM 對象裝載方式  

    //1 創建DOMDocument對象  

    $dom = new DOMDocument("1.0", "UTF-8");  

      

    //2 加載Xml文件  

    $dom->load("simplexml.xml");  

      

    $lib = simplexml_import_dom($dom);  

  

    echo "<pre>";  

   // var_dump($lib);/*1*/  

    echo "</pre>";  

      

    //取出書,  

    $books = $lib->book;  

    /* //取出第一本書 

    $book1=$books[0]; 

    //取出書名 

    echo $book1->title.":".$book1->author; */  

    for($i=0;$i<count($books);$i++){  

        $book1=$books[$i];  

        //取出屬性  

        echo "屬性:".$book1['house']."<br/>";  

        echo "第".$i."本書的 書名||作者<br/>";  

        echo $book1->title."||".$book1->author."<br/>";   

    }  

      

  

    echo "***simplexml 和xpath結合使用***<br/>";  

    echo "取出所有的書名:<br/>";  

    $titles = $lib->xpath("//title");  

    foreach ($titles as $key=>$val){  

        echo "<br/>".$key."||".$val;  

    }  

    echo "<br/>*********************************";  

?>  

輸出如下:

[php]  

屬性:qinghuachubanshe  

第0本書的 書名||作者  

tianlongbabu||xiaoming  

屬性:beidachubanshe  

第1本書的 書名||作者  

xiaoaojianghu||daming  

***simplexml 和xpath結合使用***  

取出所有的書名:  

  

0||tianlongbabu  

1||xiaoaojianghu  

*********************************  

 

   第三種轉載Xml方式,字符串方式,如下:

[php] 

<?php  

echo "<br/>simplexml也可以直接裝載一個string字符串(Xml規范)";  

  

$string = <<<XML  

<?xml version='1.0'?>   

<document>  

 <title>Forty What?</title>  

 <from>Joe</from>  

 <to>Jane</to>  

 <body>  

  I know that's the answer — but what's the question?  

 </body>  

</document>  

XML;  

  

$xml = simplexml_load_string($string);  

  

print_r($xml);  

  

?>  

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *