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 25 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
php中数组最简单的使用方法
Dec 27 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js闭包的用途详解
2014/11/09 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
Python 文件重命名工具代码
2009/07/26 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python提取xml里面的链接源码详解
2019/10/15 Python
python实现猜拳游戏
2020/03/04 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
民生工作实施方案
2014/05/31 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
先进单位事迹材料
2014/12/25 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python