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

 

XPAth技术

       XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点。主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]。

     Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据

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

<?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

    //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
} */
    	 echo $node->nodeName.":".$node->nodeValue."<br/>";

    }

?>

输入如下:

一共有2个
title:tianlongbabu
title:xiaoaojianghu

想更深入得了解XPath的使用,请参考XPath文档:http://download.csdn.net/detail/jsh13417/6042671

 

simpleXml

      simpleXMl的核心思想:以面向对象的方法来操作Xml文件。simpleXml是比较简单的方式,通常会和XPath配合使用,

<?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/>*********************************";

?>
输出如下:
属性:qinghuachubanshe

第0本书的 书名||作者

tianlongbabu||xiaoming

属性:beidachubanshe

第1本书的 书名||作者

xiaoaojianghu||daming

***simplexml 和xpath结合使用***

取出所有的书名:



0||tianlongbabu

1||xiaoaojianghu

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

   第三种转载Xml方式,字符串方式,如下:

<?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);



?>


以上便是对 2个Xml技术的简单入门介绍,想更深入的了解就需要看文档了。

参考资料:

 

你可能感兴趣的:(simple)