DOMElement::getElementsByTagNameNS

(PHP 5, PHP 7, PHP 8)

DOMElement::getElementsByTagNameNS通过 namespaceURI 和 localName 获取元素

描述

public DOMElement::getElementsByTagNameNS(?string $namespace, string $localName): DOMNodeList

此函数获取所有具有给定 localNamenamespace 的后代元素。

参数

namespace

要匹配的元素的命名空间 URI。特殊值 "*" 匹配所有命名空间。传递 null 匹配空命名空间。

localName

要匹配的元素的本地名称。特殊值 "*" 匹配所有本地名称。

返回值

此函数返回一个新的 DOMNodeList 类实例,其中包含所有匹配的元素,其顺序与在该元素树的前序遍历中遇到的顺序相同。

变更日志

版本 描述
8.0.3 namespace 现在可以为空。

参见

添加注释

用户贡献注释 1 个注释

2
spam at chovy dot com
15 年前
我在一次性删除所有 ns-uri 的默认 NS 属性方面遇到了一些困难,以下方法将起作用...首先删除 documentElement 命名空间,然后使用 getElementsByTagNameNS() - 文档应该反映第二个参数实际上是标签的名称,而不是我最初期望的本地命名空间前缀

<?php

function strip_default_ns( $xml = null, $ns_uri = 'http://example.com/XML-Foo' ) {
$ns_local = '';
$ns_tag = '*';

if ( empty(
$xml) ) return false;

//删除文档命名空间
$dom = new DOMDocument();
$dom->loadXML($xml);
$dom->documentElement->removeAttributeNS($ns_uri, $ns_local);

//删除元素命名空间
foreach ( $dom->getElementsByTagNameNS($ns_uri, $ns_tag) as $elem ) {
$elem->removeAttributeNS($ns_uri, $ns_local);
}

return
$dom->saveXML();
}

$stripped_xml = strip_default_ns($the_xml);

?>

现在,$stripped_xml 可以利用对 NULL 命名空间运行 XPath 查询。
To Top