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 相关文章推荐
网友原创的PHP模板类代码
Sep 07 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
php.ini中的request_order推荐设置
May 10 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 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
php Ubb代码编辑器函数代码
2012/07/05 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
python str与repr的区别
2013/03/23 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
python版本单链表实现代码
2018/09/28 Python
python生成lmdb格式的文件实例
2018/11/08 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
python实现高斯投影正反算方式
2020/01/17 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
材料化学应届生求职信
2013/10/09 职场文书
职高毕业生自我鉴定
2013/10/21 职场文书
采购部经理岗位职责
2014/02/10 职场文书
优秀党员推荐材料
2014/12/18 职场文书
中学推普周活动总结
2015/05/07 职场文书
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS