zoukankan      html  css  js  c++  java
  • 【万能的数据传输格式XML入门教程】八、Xpath查询语言

    XML:Xpath查询语言(相当于MySQL:SQL查询语言)

    public array SimpleXMLElement::xpath ( string $path )

    主要功能:simplexml结合xpath实现数据查询

    参数 说明
    $path Xpath语言

    注:xpath方法是没有办法通过print_r或var_dump进行调试的。

    以下实例用到的data.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <library>
        <book id="b001">
            <title>西游记</title>
            <price>168.00</price>
            <author>吴承恩</author>
            <publish>中国文学出版社</publish>
        </book>
        <book>
            <title>三国演义</title>
            <price>198.00</price>
            <author>罗贯中</author>
            <publish>三国演义研究学会</publish>
        </book>
        <book>
            <title>水浒传</title>
            <price>99.80</price>
            <author>施耐庵</author>
            <publish>清华出版社</publish>
        </book>
    </library>

    1. 使用绝对路径来实现数据的查询

    基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径。

    例:如果想查询根元素下的子元素,必须要这样表示

    /根元素/子元素

    如果来确定Xpath语言查询的是哪个元素呢?

    答:最后一个斜杠后面跟着哪个元素,那么这个表达式查询的就是哪个元素。

    绝对路径使用技巧:必须从根元素一级一级向下查询,直到要查询的元素

    /根元素/子元素/…/要查询的元素...

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、生成simplexml对象
    $xml = simplexml_load_file('data.xml');
    // 2、使用绝对路径查询data.xml文件中的所有title节点
    $data = $xml->xpath('/library/book/title');
    foreach($data as $value) {
        echo '图书标题:'.$value.'<hr />';
    }

    运行结果:

    2. 使用相对路径来实现数据的查询

    如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
    相对路径的使用小技巧://要查询的元素
    例://book

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、生成simplexml对象
    $xml = simplexml_load_file('data.xml');
    // 2、使用xpath方法来实现book节点的查询
    $data = $xml->xpath('//book');
    // 3、对book元素进行遍历输出
    foreach($data as $row) {
        echo $row->title.'<br />';
        echo $row->price.'<br />';
        echo $row->author.'<br />';
        echo $row->publish.'<hr />';
    }

    运行结果:

    3. 使用*星号来实现数据的查询

    星号 * 表示选择所有由星号之前的路径所定位的元素

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、生成simplexml对象
    $xml = simplexml_load_file('data.xml');
    // 2、使用xpath实现数据的查询
    $data = $xml->xpath('//book/*');
    foreach($data as $value) {
        echo $value.'<hr />';
    }

    运行结果:

    说明:系统运行时,首先生成SimpleXML对象,然后通过Xpath进行查询,把所有book节点下的子元素都保存在数组的索引元素中,第一个满足条件的结果放入索引为0的元素中,第二个满足条件的结果放入索引为1的元素中…

    4. 使用方括号[]来实现数据的查询

    方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素
    //元素[index],默认情况下index索引是从1开始
    //元素[last()],获取最后一个满足条件的元素
    中括号中除了可以放置元素的索引外,还可以用于存放表达式
    //元素[score<60]

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、生成simplexml对象
    $xml = simplexml_load_file('data.xml');
    // 2、使用xpath实现数据查询
    $data = $xml->xpath('//book[price>100]');
    foreach($data as $row) {
        echo $row->title.'<hr />';
    }

    运行结果:

    5. 使用@符号来实现数据的查询

    在Xpath中,可以使用@符号获取元素的属性

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、生成simplexml对象
    $xml = simplexml_load_file('data.xml');
    // 2、使用xpath实现数据的查询操作
    $data = $xml->xpath('//book[@id]');
    foreach($data as $row) {
        echo $row->title.'<hr />';
    }

    运行结果:

  • 相关阅读:
    slim中返回结果加密的
    windows下的redis和redismyadmin
    centos6.2升级到centos6.8(6.5应该也一样)
    剑指offer-二叉树的深度
    leetcode-【hard】4. Median of Two Sorted Arrays
    leetcode-【中等题】5. Longest Palindromic Substring
    leetcode-【中等题】3. Longest Substring Without Repeating Characters
    leetcode-【中等题】2. Add Two Numbers
    leetcode-【中等题】228. Summary Ranges
    leetcode-【hard】273. Integer to English Words
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522564.html
Copyright © 2011-2022 走看看