PHP XPath谓语(xml中快速查找并筛选)

18 篇文章 0 订阅
13 篇文章 0 订阅

谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。“ [ ] ”


XPath 通配符可用来选取未知的 XML 元素。  " * "


XPATH语法之选取若干路径。 " | "


xpath2.php:

<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->load('bookstore.xml');
//实例化domxpath对象
$xpath = new DOMXPath($dom);
$query = "//book[1]"; //第一本书,注意不是从0开始,而是从1开始
$query = "//book[last()]"; //最后一本
$query = "//book[last()-1]" ;//倒数第二本
$query = "//book[position()<3]";//找到前两个book节点。这些book节点是亲兄弟,可以用position() last()等。
$query = "//title[position() < 2]"; //居然有3个? 原因:在使用last()和position()时,指的是具有相同父元素的亲兄弟节点。
$query = "//title[2]"; //居然一个都没有? 这些title节点不是亲兄弟节点使用last()和position()时会和预计的不一样。

$query = "//book[@category]" ;//具有category属性的book节点
$query = "//book[@category='CHILDREN']"; //具有category属性且值为children的book节点
$query = "//book[price > 35]"; //在book中,找到子节点price的nodeValue > 35 的book节点
$query = "//book[price>35]/title"; //找到price > 35 的book下的title节点

$res = $xpath->query($query);
var_dump($res);
bookstore.xml:
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值