XPath即为XML路径语言,它可以从XML文档的树形结构中找出某节点的功能,它可以按照路径表达式来查找所需要的节点信息。
04.xml文件:
例子1:找出book节点下的书籍名称
<?php
/**
* XPath的使用
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');//确定编码
$dom = new DomDocument('1.0','utf-8');//创建dom对象
$dom->load('04.xml');//加载xml文件
$xpath = new DomXPath($dom);//创建xpath路径对象
$sql = '/bookstore/book/title';//定义路径表达式,含义是从根节点下的bookstore节点下的book节点下找出title节点
$list = $xpath->query($sql);//查找操作
//遍历,输出节点内容
foreach ($list as $k => $v) {
echo $v->nodeValue."<br/>";
}
?>
结果:
例子2:找出价格大于50元的书籍名称
代码:
<?php
/**
* XPath的使用
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$dom = new DomDocument('1.0','utf-8');
$dom->load('04.xml');
$xpath = new DomXPath($dom);
$sql = '/bookstore/book[price>50]/title';//路径表达式,表示价格大于50元的书籍的title节点
$list = $xpath->query($sql);
foreach ($list as $k => $v) {
echo $v->nodeValue."<br/>";
}
?>
结果:
例子3:找出所有title节点,包括a标签下的title节点
代码:
<?php
/**
* XPath的使用
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$dom = new DomDocument('1.0','utf-8');
$dom->load('04.xml');
$xpath = new DomXPath($dom);
$sql = '//title';//表示选取所有title元素,而不管它们在文档中的位置
$list = $xpath->query($sql);
foreach ($list as $k => $v) {
echo $v->nodeValue."<br/>";
}
?>
结果:
例子4:找出第二本书籍的名称
代码:
<?php
/**
* XPath的使用
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$dom = new DomDocument('1.0','utf-8');
$dom->load('04.xml');
$xpath = new DomXPath($dom);
$sql = '/bookstore/book[2]/title';//找出第二本书籍的名称
$list = $xpath->query($sql);
foreach ($list as $k => $v) {
echo $v->nodeValue."<br/>";
}
?>
结果:
例子5:找出书籍名称为“天龙八部”的价格
代码:
<?php
/**
* XPath的使用
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$dom = new DomDocument('1.0','utf-8');
$dom->load('04.xml');
$xpath = new DomXPath($dom);
$sql = '/bookstore/book[title="天龙八部"]/price';//找出书籍名称为“天龙八部”的价格
$list = $xpath->query($sql);
foreach ($list as $k => $v) {
echo $v->nodeValue."<br/>";
}
?>
结果: