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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
PHP 数组教程 定义数组
Oct 23 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP file_exists问题杂谈
May 07 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
PHP与javascript对多项选择的处理
2006/10/09 PHP
给初学PHP的5个入手程序
2006/11/23 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
自荐信范文
2013/12/10 职场文书
财务主管自我鉴定
2014/01/17 职场文书
职位说明书范文
2014/05/07 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang