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