首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SimpleXMLElement::registerXPathNamespace

(PHP 5 >= 5.2.0, PHP 7)

SimpleXMLElement :: registerXPathNamespace - 为下一个XPath查询创建前缀/ ns上下文

描述

代码语言:javascript
复制
public bool SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns )

为下一个XPath查询创建前缀/ ns上下文。特别是,如果给定XML文档的提供者更改名称空间前缀,这将非常有用。registerXPathNamespace将为关联的命名空间创建一个前缀,允许其访问该命名空间中的节点,而无需更改代码以允许提供者指定的新前缀。

参数

prefix

名称空间前缀在XPath查询中用于ns中给出的名称空间。

ns

用于XPath查询的名称空间。 这必须与XML文档使用的名称空间匹配,否则使用前缀的XPath查询不会返回任何结果。

返回值

成功返回TRUE或失败时返回FALSE。

例子

示例#1 设置要在XPath查询中使用的名称空间前缀

代码语言:javascript
复制
<?php

$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?.?"\n";
}

?>

上面的例子将输出:

代码语言:javascript
复制
Chapter 1
Chapter 2

请注意,示例中显示的XML文档如何设置名称空间,其前缀为chap。想象一下,这个文档(或者另一个喜欢它的文档)在过去可能为同一个命名空间使用了c的前缀。由于它已更改,XPath查询将不再返回正确的结果,并且查询将需要修改。使用registerXPathNamespace 可以避免将来对该查询进行修改,即使提供者更改了命名空间前缀。

扩展内容

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

← SimpleXMLElement::getNamespaces

SimpleXMLElement::saveXML →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com