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中SQL注入攻击与XSS攻击
Jun 10 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
php类的扩展和继承用法实例
Jun 20 PHP
php强制下载文件函数
Aug 24 PHP
php cookie 详解使用实例
Nov 03 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
php框架知识点的整理和补充
Mar 01 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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连接access数据库
2008/03/27 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
PHP学习之整理字符串
2011/04/17 PHP
JS 网站性能优化笔记
2011/05/24 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
Javascript Math对象
2009/08/13 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
详解vue axios中文文档
2017/09/12 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
python将字典内容存入mysql实例代码
2018/01/18 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python ftplib模块使用代码实例
2019/12/31 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
六年级学生评语
2014/04/22 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
项目建议书范文
2014/05/12 职场文书
公司总经理任命书
2014/06/05 职场文书
2015年调度员工作总结
2015/04/30 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
解析redis hash应用场景和常用命令
2021/08/04 Redis
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers