PHP 8.3.4 Released!

DOMElement::getElementsByTagNameNS

(PHP 5, PHP 7, PHP 8)

DOMElement::getElementsByTagNameNS Получает элементы по локальному имени в заданном пространстве имён

Описание

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

Функция выбирает все элементы-потомки с заданным в параметре localName именем и пространством имён, указанном в параметре namespace.

Список параметров

namespace

URI пространства имён элементов для поиска. Специальное значение "*" соответствует всем пространствам имён. Передача значения null соответствует пустому пространству имён.

localName

Локальное имя элементов для поиска. Специальное значение "*" соответствует всем локальным именам.

Возвращаемые значения

Возвращает новый объект класса DOMNodeList, содержащий все найденные элементы в том порядке, в котором они появляются при прямом обходе дерева.

Список изменений

Версия Описание
8.0.3 namespace теперь допускает значение null.

Смотрите также

add a note

User Contributed Notes 1 note

up
2
spam at chovy dot com
14 years ago
I had some difficulty stripping all default NS attributes for an ns-uri in one shot, the following will work though...first strip the documentElement namespace, then getElementsByTagNameNS() -- the documentation should reflect that the 2nd argument is actually the name of the tag, not the local namespace prefix as I first expected:

<?php

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

if ( empty(
$xml) ) return false;

//remove document namespace
$dom = new DOMDocument();
$dom->loadXML($xml);
$dom->documentElement->removeAttributeNS($ns_uri, $ns_local);

//strip element namespaces
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 can now take advantage of running XPath queries on it for the NULL namespace.
To Top