php 使用xpath_在PHP中使用XPath

php 使用xpath

在本文中,了解以下概念:

  • 用于XPath
  • 编写基本的XPath表达式
  • 使用PHP XML库的XPath功能
  • 使用XPath和PHP转换数据格式

本文提供了几个可以结合使用XPath和PHP的工作示例,并假设您具有Prerequisites中描述的先决条件

先决条件

为了从本文中获得最大收益,您应该具有XML和PHP5知识以及配置和安装PHP扩展。 此外,您还需要访问并了解带有支持PHP5的Web服务器的基于UNIX®或Microsoft®Windows®操作系统的知识,并可以在本文上练习本文中的代码示例。

了解对XPath的需求

随着Web向语义Web的原始愿景发展,应用程序之间的交互性也越来越强。 诸如SOAP,REST,RSS,RDF之类的技术以及其他技术是未来Web的强大推动者。 在大多数情况下,XML是用来描述所涉及数据的选定消息格式。 在某种程度上,您可以使用JSON,但您可能会将XML视为主要的数据交换方法。

或者,您可能会遇到将XML数据转换为XHTML,以为移动用户和各种Web浏览器提供有吸引力的,交互式的和可用的界面的任务。

将数据作为XML文档存储到文件系统或XML兼容数据库也是一种流行的方式来存档数据,以供以后检索以执行报告,用户界面显示或应用程序集成等任务。

使用XML数据时,您需要解析数据以获取最小公分母-所需数据(或原子节点值,通常称为原子节点值)。 XSLT是W3C标准,它执行XML到另一种格式的转换,例如HTML,PDF,甚至是另一种使用不同模式的XML文档。 XQuery,XForms和XPointer都非常依赖XPath的使用。

XPath背景

以最简单的形式,XPath是一种用于在内存中导航XML树的语言。 最初,XPath被设计为XSLT和XPointer的语言。 XPath 1.0在1999年成为W3C标准。较新的XPath 2.0在2007年获得规范状态。

随着其他XML规范的出现,XPath的使用也出现了。 如今,XPath已成为在XML模式,ISO Schematron,XQuery和XForms中导航XML的首选语言。 具有讽刺意味的是,但有充分的理由,XPath不是基于XML语法的。 它使用自己的语法来避免与URI和其他XML相关语法的冲突。

在PHP中使用XPath时,请记住不要单独使用XPath。 您可以使用它作为在其他XML规范之一中工作时在内存中浏览XML的工具。

出于本文的目的,我在讨论和示例中使用了更广泛使用的XPath 1.0规范。 XPath 2.0向后兼容XPath 1.0,但是PHP今天对XPath 2.0的支持有限。

XPath规范提供了其标准用法和术语的详细说明。 如果您期望将XPath与PHP一起复杂使用,则此规范是可靠的参考点。 否则,XPath规范可以归纳为四个主要的关注领域,如表1所示

表1. XPath规范的四个主要领域
描述 例子
位置路径 包含位置步骤,轴,谓词和缩写语法。 父::节点,子::文本(),属性:: *,/ PRODUCTS / PRODUCT [3] / NAME
资料模型 将XML描述为树。 包含根,属性,文本,名称空间,元素,处理指令和注释的节点。 /,/ ns1:PRODUCTS / ns1:PRODUCT,@category
表达方式 可能包含变量引用,函数,布尔值,数字,字符串和谓词。 / PRODUCTS / PRODUCT / NAME [字符串长度()> 15] /../@ category
功能 XPath 1.0具有27个内置函数,这些函数分为节点集,字符串,布尔值或数字函数。 string-length(),true(),sum()

编写XPath表达式

在编写PHP代码之前,花一些时间检查XPath节点,路径和功能。 清单1中的products.xml文件提供了一些常用表达式的示例,这些表达式可基于谓词在XML路径中定位数据,定位节点的原子值并利用函数。

清单1.示例产品XML文档(products.xml)
<?xml version="1.0" encoding="UTF-8"?>
<PRODUCTS>
<PRODUCT category="software">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值