PHPerKaigi 2024

DOMElement::getElementsByTagNameNS

(PHP 5, PHP 7, PHP 8)

DOMElement::getElementsByTagNameNSObtener los elementos por la URI del espacio de nombres y el nombre local

Descripción

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

Esta función trae todos los elementos descendientes con unos localName y namespace dados.

Parámetros

namespace

The namespace URI of the elements to match on. The special value "*" matches all namespaces. Passing null matches the empty namespace.

localName

The local name of the elements to match on. The special value "*" matches all local names.

Valores devueltos

Esta función devuelve una nueva instancia de la clase DOMNodeList con todos los elementos coincidentes en el orden en que fueron encontrados en un recorriendo en preorden este elemento árbol.

Historial de cambios

Versión Descripción
8.0.3 namespace is nullable now.

Ver también

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