• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • DOMElement::getElementsByTagNameNS()

    (PHP 5, PHP 7)

    Get elements by namespaceURI and localName

    说明

    publicDOMElement::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.