PHP SimpleXMLElement::registerXPathNamespace SimpleXML 函数

  • 定义和用法

    SimpleXMLElement::registerXPathNamespace - 为下一个XPath查询创建一个初始/ns一些
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
  • 语法

    SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns )
    
    为下一个XPath查询创建一个前缀/ns上下文。 特别是,如果给定XML文档的提供者更改了名称空间前缀,这将很有帮助。 registerXPathNamespace将为关联的名称空间创建一个前缀,从而允许一个人访问该名称空间中的节点,而无需更改代码以允许提供者指定新的前缀。
  • 参数

    参数 必需的 描述
    prefix 在ns中给定的名称空间的XPath查询中使用的名称空间前缀。
    ns XPath查询使用的名称空间。 这必须与XML文档使用的名称空间匹配,否则使用前缀的XPath查询将不会返回任何结果。
  • 返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE。
  • 示例

    $xml = <<<EOD
    <book xmlns:chap="http://example.org/chapter-title">
        <title>My Book</title>
        <chapter id="1">
            <chap:title>Chapter 1</chap:title>
            <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque. 
                In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci. 
                Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut, 
                ultricies id, mauris.</para>
        </chapter>
        <chapter id="2">
            <chap:title>Chapter 2</chap:title>
            <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin 
                gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam 
                vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros 
                tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
        </chapter>
    </book>
    EOD;
    
    $sxe = new SimpleXMLElement($xml);
    
    $sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
    $result = $sxe->xpath('//c:title');
    
    foreach ($result as $title) {
            echo $title . "<br/>";
    }
    
    尝试一下
  • 相关函数

    SimpleXMLElement::xpath() - 对XML数据运行XPath查询
    SimpleXMLElement::getDocNamespaces() - 返回文档中声明的名称空间
    SimpleXMLElement::getNamespaces() - 返回文档中使用的名称空间