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 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
2.PHP入门
Oct 09 PHP
php数组中包含中文的排序方法
Jun 03 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
php获取错误信息的方法
Jul 17 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
gearman中任务的优先级和返回状态实例分析
Feb 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
php 问卷调查结果统计
2015/10/08 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python中使用PIPE操作Linux管道
2015/02/04 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
python 如何停止一个死循环的线程
2020/11/24 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
医院护士的求职信
2014/01/03 职场文书
安全责任书范文
2014/03/12 职场文书
老师对学生的评语
2014/04/18 职场文书
企业文化理念标语
2014/06/10 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP