PHP使用xpath解析XML的方法详解


Posted in PHP onMay 20, 2017

本文实例讲述了PHP使用xpath解析XML的方法。分享给大家供大家参考,具体如下:

XML文件在PHP网站开发的轻量级应用中使用非常广泛,而PHP解析和读取XML文件的方式有很多种,比如JS DOM、SimpleXml、Xpath等方式解析XML文件,今天来讲讲在PHP中使用Xpath解析XML的实例,同时通过Xpath解析XML的实例来介绍部分基础的Xpath语法。

Xpath是什么?

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

PHP解析XML推荐教程:PHP4和PHP5版本下解析XML文档的操作方法

需要PHP解析的XML文档:

<?xmlversion="1.0"encoding="gbk"?>
<LeapsoulXML> 
<LeapsoulInfo> 
<name>PHP网站开发-PHP教程-3water.com</name>
  <website>https://3water.com</website>
 </LeapsoulInfo>
 <LeapsoulInfo> 
<name>
   <keywords>
   <keywordkeyid='1'>PHP网站开发</keyword>
   <keywordkeyid='2'>PHP教程</keyword>
   <keywordkeyid='3'>PHP</keyword>
   </keywords>
   <seo>SEO</seo>
  </name>
 </LeapsoulInfo>
 <WebInfo> 
<name>PHP网站开发</name>
  <website>https://3water.com</website>
 </WebInfo>
</LeapsoulXML>

Xpath语法教程

/表示从XML文件中的根节点开始解析
//表示在XML文件中匹配已选择的当前节点,且不考虑其位置关系(类似于SQL中模糊查询)
. 表示选取当前节点
..表示选取当前节点的父节点
@表示匹配具体的节点或属性

PHP解析XML实例第一步

$xml = simplexml_load_file('leapsoulcn.xml');

说明:使用PHP SimpleXML载入需要解析的XML文档,SimpleXML默认PHP5支持。

实例一:

foreach($xml->xpath('LeapsoulInfo')as $value) { 
  print_r($value);
}

说明:在这个Xpath实例中通过Xpath查询指定节点,以数组形式返回其所有的子节点,并通过PHP的print_r函数打印出最终的数组结构。

实例二:

foreach($xml->xpath('LeapsoulInfo/name')as $value) { 
  print_r($value);
}

说明:在这个Xpath实例中通过Xpath路径表达式的方式指定需要Xapth查询的某个特定子节点,以数组形式返回这个子节点的元素。

实例三:

foreach($xml->xpath('//name')as $value) { 
  print_r($value);
}

说明:在这个Xpath实例中通过使用//表示使用Xpath查询XML文件中所有name节点的元素,与上一个Xpath实例的区别在于name没有位置关系。

实例四:

foreach($xml->xpath('LeapsoulInfo//name')as $value) { 
  print_r($value);
}

说明:PHP解析XML文件中指定节点下的某个子节点,以数组形式返回其所有子节点,忽略指定的这个子节点在LeapsoulInfoXML中的位置关系。

实例五:

foreach($xml->xpath("//name/keywords/keyword[@keyid='1']")as $value) { 
  print_r($value);
}

说明:在需要PHP解析的XML文件中通过Xpath查找keyid=1的元素,以数组形式返回。

OK,上述几个PHP Xpath实例教程是PHP解析XML文件最基础的方法,通过合理使用Xpath路径表达式可以进行复杂的XML查询和解析,使用起来感觉和SQL一样方便。

PHP 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
在任意字符集下正常显示网页的方法一
Apr 01 PHP
PHP和XSS跨站攻击的防范
Apr 17 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
thinkphp 多表 事务详解
Jun 17 PHP
Laravel 5框架学习之表单
Apr 08 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 #PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
May 20 #PHP
PHP实现对xml的增删改查操作案例分析
May 19 #PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 #PHP
php简单处理XML数据的方法示例
May 19 #PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 #PHP
php对xml文件的增删改查操作实现方法分析
May 19 #PHP
You might like
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
javascript中this的四种用法
2015/05/11 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
Python多线程实例教程
2014/09/06 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python六大开源框架对比
2015/10/19 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python机器学习之神经网络(三)
2017/12/20 Python
python实现图书管理系统
2018/03/12 Python
Python Celery多队列配置代码实例
2019/11/22 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
项目开发计划书
2014/01/09 职场文书
大班亲子运动会方案
2014/06/10 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书