知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门

发布时间:2015-05-27 19:25:19作者:知识屋

   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);  
  
?>  
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜