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入门小知识
Mar 24 PHP
使用php来实现网络服务
Sep 15 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
php上传图片类及用法示例
May 11 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 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版)
2006/10/09 PHP
PHP4在Windows2000下的安装
2006/10/09 PHP
Yii核心验证器api详解
2016/11/23 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
var与Javascript变量隐式声明
2009/09/17 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
python列表的增删改查实例代码
2018/01/30 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
python创建文本文件的简单方法
2020/08/30 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
函授毕业生自我鉴定范文
2014/03/25 职场文书
英语教师求职信
2014/06/16 职场文书
python如何进行基准测试
2021/04/26 Python
TensorFlow的自动求导原理分析
2021/05/26 Python