xpath基本概念总结

<?php 
/**

当xml数据比较多的时候,查询起来比较慢,
我们可以使用 xpath 或者是 xquery   无敌宇宙快速查询器

****/
步骤:
1.创建 DOM 对象,导入 xml 文件
	$xml = new DOMDocument("1.0","utf-8");
	$xml->load('./book.xml');

2.构造 xpath 查询器
	$xpath = new DOMXPATH($xml);

3.使用==>主要看怎么走路
	$sql = '/bookstore/book[price>30]/title[2]';
	路径是:查找bookstore下的 price>30 底下的 第二个 title 节点

	$rs = $xpath->query($sql);
	print_r($ra->item(0)->nodeValue); //查看该节点下的内容 


4.另一种查法,并不严格的路径 使用 //
	/a/b ==> 表示 a b 是父子关系  /a//b ==> 表示 a 是 b 的祖先,忽略了层次
	$sql = '/bookstore//title';
	路径是:查找bookstore下所有的title节点
	$rs = $xpath->query($sql);
	echo $rs->item(0)->nodeValue;

5.显示全部title节点
	//foreach 可以用于数组和对象 $rs是Object(DOMNodelist)
	foreach ($rs as $v) {
		echo $v->nodeValue;
	}

6.利用 xpath 查询html的内容
	做小偷程序的时候,不用非要正则匹配,使用 DOM 标准的 xpath 也可以
	
	//创建DOM,引入html文件
	$html = new DOMDocument("1.0","utf-8");
	$html->loadhtmlfile('xmldic.html');

	//创建xpath构造器
	$xpath = new DOMXPATH($html);

	//执行查找内容
	$sql = '/html/body/h2';
	echo $xpath->query($sql)->item(0)->nodeValue;

	//属性之前需要加@
	$sql = "//div[@id='123']";
	echo $xpath->query($sql)->item(0)->nodeValue;


	//分析第2个div下的, p下的, 第二个span的内容
	$sql = '//div/p/span[2]';
	echo $xpath->query($sql)->item(0)->nodeValue;


相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念