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.DOMElement::getElementsByTagNameNS
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DOMElement::getElementsByTagNameNS
Референца за `domelement.getelementsbytagnamens.php` со подобрена типографија и навигација.
DOMElement::getElementsByTagNameNS
класата mysqli_driver
DOMElement::getElementsByTagNameNS — Get elements by namespaceURI and localName
= NULL
This function fetch all the descendant elements with a given
localName and namespace.
Параметри
namespace-
The namespace URI of the elements to match on. The special value
"*"matches all namespaces. Passingnullmatches the empty namespace. localName-
The local name of the elements to match on. The special value
"*"matches all local names.
Вратени вредности
This function returns a new instance of the class DOMNodeList of all matched elements in the order in which they are encountered in a preorder traversal of this element tree.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.3 |
namespace сега е null.
|