DOMElement::getElementsByTagNameNS()
(PHP 5, PHP 7)
Get elements by namespaceURI and localName
说明
public DOMElement::getElementsByTagNameNS(string $namespaceURI,string $localName): DOMNodeList
This function fetch all the descendant elements with a given$localNameand$namespaceURI.
参数
- $namespaceURI
The namespace URI.
- $localName
The local name. Use*to return all elements within the element tree.
返回值
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.
参见
- DOMElement::getElementsByTagName() Gets elements by tagname
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.