• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: php 中文手册 -> php 外部扩展库

    DOM(文档对象模型)

    DOM文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档,它本身属于浏览器。

    HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。所以查找HTML中的某个标签即是查抄树上的某个节点。

    安装

    此扩展需要 libxml PHP 扩展。这表示需要使用--enable-libxml,尽管这将隐式完成因为 libxml 是缺省开启的。

    此扩展默认为启用,编译时可通过下列选项禁用:--disable-dom

    For Ubuntu:
    sudo apt-get install php7.0-xml
    For Fedora:
    yum -y install php-xml
    

    本参考中的许多示例需要XML文件。我们将使用包含以下内容的book.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
     "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
    ]>
    <book id="listing">
     <title>My lists</title>
     <chapter id="books">
      <title>My books</title>
      <para>
       <informaltable>
        <tgroup cols="4">
         <thead>
          <row>
           <entry>Title</entry>
           <entry>Author</entry>
           <entry>Language</entry>
           <entry>ISBN</entry>
          </row>
         </thead>
         <tbody>
          <row>
           <entry>The Grapes of Wrath</entry>
           <entry>John Steinbeck</entry>
           <entry>en</entry>
           <entry>0140186409</entry>
          </row>
          <row>
           <entry>The Pearl</entry>
           <entry>John Steinbeck</entry>
           <entry>en</entry>
           <entry>014017737X</entry>
          </row>
          <row>
           <entry>Samarcande</entry>
           <entry>Amine Maalouf</entry>
           <entry>fr</entry>
           <entry>2253051209</entry>
          </row>
          <!-- TODO: I have a lot of remaining books to add.. -->
         </tbody>
        </tgroup>
       </informaltable>
      </para>
     </chapter>
    </book>
    

    DOMAttr类

    DOMAttr extends DOMNode
    {
    	/* 属性 */
    	public readonly string $name ;
    	public readonly DOMElement $ownerElement ;
    	public readonly bool $schemaTypeInfo ;
    	public readonly bool $specified ;
    	public string $value ;
    	/* 继承的属性 */
    	public readonly string $nodeName ;
    	public string $nodeValue ;
    	public readonly int $nodeType ;
    	public readonly DOMNode $parentNode ;
    	public readonly DOMNodeList $childNodes ;
    	public readonly DOMNode $firstChild ;
    	public readonly DOMNode $lastChild ;
    	public readonly DOMNode $previousSibling ;
    	public readonly DOMNode $nextSibling ;
    	public readonly DOMNamedNodeMap $attributes ;
    	public readonly DOMDocument $ownerDocument ;
    	public readonly string $namespaceURI ;
    	public string $prefix ;
    	public readonly string $localName ;
    	public readonly string $baseURI ;
    	public string $textContent ;
    	/* 方法 */
    	public __construct ( string $name [, string $value ] )
    	public isId ( void ) : bool
    	/* 继承的方法 */
    	public DOMNode::appendChild ( DOMNode $newnode ) : DOMNode
    	public DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) : string
    	public DOMNode::C14NFile ( string $uri [, bool $exclusive = FALSE [, bool $with_comments = FALSE [, array $xpath [, array $ns_prefixes ]]]] ) : int
    	public DOMNode::cloneNode ([ bool $deep ] ) : DOMNode
    	public DOMNode::getLineNo ( void ) : int
    	public DOMNode::getNodePath ( void ) : string
    	public DOMNode::hasAttributes ( void ) : bool
    	public DOMNode::hasChildNodes ( void ) : bool
    	public DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) : DOMNode
    	public DOMNode::isDefaultNamespace ( string $namespaceURI ) : bool
    	public DOMNode::isSameNode ( DOMNode $node ) : bool
    	public DOMNode::isSupported ( string $feature , string $version ) : bool
    	public DOMNode::lookupNamespaceUri ( string $prefix ) : string
    	public DOMNode::lookupPrefix ( string $namespaceURI ) : string
    	public DOMNode::normalize ( void ) : void
    	public DOMNode::removeChild ( DOMNode $oldnode ) : DOMNode
    	public DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) : DOMNode
    }
    

    DOMCdataSection类

    DOMCdataSection extends DOMText 
    {
    	/* 继承的属性 */
    	readonly public string $wholeText ;
    	public string $data ;
    	readonly public int $length ;
    	public readonly string $nodeName ;
    	public string $nodeValue ;
    	public readonly int $nodeType ;
    	public readonly DOMNode $parentNode ;
    	public readonly DOMNodeList $childNodes ;
    	public readonly DOMNode $firstChild ;
    	public readonly DOMNode $lastChild ;
    	public readonly DOMNode $previousSibling ;
    	public readonly DOMNode $nextSibling ;
    	public readonly DOMNamedNodeMap $attributes ;
    	public readonly DOMDocument $ownerDocument ;
    	public readonly string $namespaceURI ;
    	public string $prefix ;
    	public readonly string $localName ;
    	public readonly string $baseURI ;
    	public string $textContent ;
    	/* Methods */
    	public __construct ( string $value )
    	/* Inherited methods */
    	public DOMText::isElementContentWhitespace ( void ) : bool
    	public DOMText::isWhitespaceInElementContent ( void ) : bool
    	public DOMText::splitText ( int $offset ) : DOMText
    	public DOMCharacterData::appendData ( string $data ) : void
    	public DOMCharacterData::deleteData ( int $offset , int $count ) : void
    	public DOMCharacterData::insertData ( int $offset , string $data ) : void
    	public DOMCharacterData::replaceData ( int $offset , int $count , string $data ) : void
    	public DOMCharacterData::substringData ( int $offset , int $count ) : string
    	public DOMNode::appendChild ( DOMNode $newnode ) : DOMNode
    	public DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) : string
    	public DOMNode::C14NFile ( string $uri [, bool $exclusive = FALSE [, bool $with_comments = FALSE [, array $xpath [, array $ns_prefixes ]]]] ) : int
    	public DOMNode::cloneNode ([ bool $deep ] ) : DOMNode
    	public DOMNode::getLineNo ( void ) : int
    	public DOMNode::getNodePath ( void ) : string
    	public DOMNode::hasAttributes ( void ) : bool
    	public DOMNode::hasChildNodes ( void ) : bool
    	public DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) : DOMNode
    	public DOMNode::isDefaultNamespace ( string $namespaceURI ) : bool
    	public DOMNode::isSameNode ( DOMNode $node ) : bool
    	public DOMNode::isSupported ( string $feature , string $version ) : bool
    	public DOMNode::lookupNamespaceUri ( string $prefix ) : string
    	public DOMNode::lookupPrefix ( string $namespaceURI ) : string
    	public DOMNode::normalize ( void ) : void
    	public DOMNode::removeChild ( DOMNode $oldnode ) : DOMNode
    	public DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) : DOMNode
    }
    

    DOMCharacterData类

    表示具有字符数据的节点。没有节点直接对应于该类,但其他节点确实继承自该类

    DOMCharacterData extends DOMNode
    {
    	/* 属性 */
    	public string $data ;
    	readonly public int $length ;
    	/* 继承的属性 */
    	public readonly string $nodeName ;
    	public string $nodeValue ;
    	public readonly int $nodeType ;
    	public readonly DOMNode $parentNode ;
    	public readonly DOMNodeList $childNodes ;
    	public readonly DOMNode $firstChild ;
    	public readonly DOMNode $lastChild ;
    	public readonly DOMNode $previousSibling ;
    	public readonly DOMNode $nextSibling ;
    	public readonly DOMNamedNodeMap $attributes ;
    	public readonly DOMDocument $ownerDocument ;
    	public readonly string $namespaceURI ;
    	public string $prefix ;
    	public readonly string $localName ;
    	public readonly string $baseURI ;
    	public string $textContent ;
    	/* 方法 */
    	public appendData ( string $data ) : void
    	public deleteData ( int $offset , int $count ) : void
    	public insertData ( int $offset , string $data ) : void
    	public replaceData ( int $offset , int $count , string $data ) : void
    	public substringData ( int $offset , int $count ) : string
    	/* 继承的方法 */
    	public DOMNode::appendChild ( DOMNode $newnode ) : DOMNode
    	public DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) : string
    	public DOMNode::C14NFile ( string $uri [, bool $exclusive = FALSE [, bool $with_comments = FALSE [, array $xpath [, array $ns_prefixes ]]]] ) : int
    	public DOMNode::cloneNode ([ bool $deep ] ) : DOMNode
    	public DOMNode::getLineNo ( void ) : int
    	public DOMNode::getNodePath ( void ) : string
    	public DOMNode::hasAttributes ( void ) : bool
    	public DOMNode::hasChildNodes ( void ) : bool
    	public DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) : DOMNode
    	public DOMNode::isDefaultNamespace ( string $namespaceURI ) : bool
    	public DOMNode::isSameNode ( DOMNode $node ) : bool
    	public DOMNode::isSupported ( string $feature , string $version ) : bool
    	public DOMNode::lookupNamespaceUri ( string $prefix ) : string
    	public DOMNode::lookupPrefix ( string $namespaceURI ) : string
    	public DOMNode::normalize ( void ) : void
    	public DOMNode::removeChild ( DOMNode $oldnode ) : DOMNode
    	public DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) : DOMNode
    }
    

    DOMComment

    表示注释节点,字符由分隔<!-- and -->

    DOMComment extends DOMCharacterData 
    {
    	/* 继承的属性 */
    	public string $data ;
    	readonly public int $length ;
    	public readonly string $nodeName ;
    	public string $nodeValue ;
    	public readonly int $nodeType ;
    	public readonly DOMNode $parentNode ;
    	public readonly DOMNodeList $childNodes ;
    	public readonly DOMNode $firstChild ;
    	public readonly DOMNode $lastChild ;
    	public readonly DOMNode $previousSibling ;
    	public readonly DOMNode $nextSibling ;
    	public readonly DOMNamedNodeMap $attributes ;
    	public readonly DOMDocument $ownerDocument ;
    	public readonly string $namespaceURI ;
    	public string $prefix ;
    	public readonly string $localName ;
    	public readonly string $baseURI ;
    	public string $textContent ;
    	/* 方法 */
    	public __construct ([ string $value ] )
    	/* 继承的方法 */
    	public DOMCharacterData::appendData ( string $data ) : void
    	public DOMCharacterData::deleteData ( int $offset , int $count ) : void
    	public DOMCharacterData::insertData ( int $offset , string $data ) : void
    	public DOMCharacterData::replaceData ( int $offset , int $count , string $data ) : void
    	public DOMCharacterData::substringData ( int $offset , int $count ) : string
    	public DOMNode::appendChild ( DOMNode $newnode ) : DOMNode
    	public DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) : string
    	public DOMNode::C14NFile ( string $uri [, bool $exclusive = FALSE [, bool $with_comments = FALSE [, array $xpath [, array $ns_prefixes ]]]] ) : int
    	public DOMNode::cloneNode ([ bool $deep ] ) : DOMNode
    	public DOMNode::getLineNo ( void ) : int
    	public DOMNode::getNodePath ( void ) : string
    	public DOMNode::hasAttributes ( void ) : bool
    	public DOMNode::hasChildNodes ( void ) : bool
    	public DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) : DOMNode
    	public DOMNode::isDefaultNamespace ( string $namespaceURI ) : bool
    	public DOMNode::isSameNode ( DOMNode $node ) : bool
    	public DOMNode::isSupported ( string $feature , string $version ) : bool
    	public DOMNode::lookupNamespaceUri ( string $prefix ) : string
    	public DOMNode::lookupPrefix ( string $namespaceURI ) : string
    	public DOMNode::normalize ( void ) : void
    	public DOMNode::removeChild ( DOMNode $oldnode ) : DOMNode
    	public DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) : DOMNode
    }
    

    DOMDocument类

    表示整个HTML或XML文档;用作文档树的根

    DOMDocument extends DOMNode 
    {
    	/* 属性 */
    	readonly public string $actualEncoding ;
    	readonly public DOMConfiguration $config ;
    	readonly public DOMDocumentType $doctype ;
    	readonly public DOMElement $documentElement ;
    	public string $documentURI ;
    	public string $encoding ;
    	public bool $formatOutput ;
    	readonly public DOMImplementation $implementation ;
    	public bool $preserveWhiteSpace = TRUE ;
    	public bool $recover ;
    	public bool $resolveExternals ;
    	public bool $standalone ;
    	public bool $strictErrorChecking = TRUE ;
    	public bool $substituteEntities ;
    	public bool $validateOnParse = FALSE ;
    	public string $version ;
    	readonly public string $xmlEncoding ;
    	public bool $xmlStandalone ;
    	public string $xmlVersion ;
    	/* 继承的属性 */
    	public readonly string $nodeName ;
    	public string $nodeValue ;
    	public readonly int $nodeType ;
    	public readonly DOMNode $parentNode ;
    	public readonly DOMNodeList $childNodes ;
    	public readonly DOMNode $firstChild ;
    	public readonly DOMNode $lastChild ;
    	public readonly DOMNode $previousSibling ;
    	public readonly DOMNode $nextSibling ;
    	public readonly DOMNamedNodeMap $attributes ;
    	public readonly DOMDocument $ownerDocument ;
    	public readonly string $namespaceURI ;
    	public string $prefix ;
    	public readonly string $localName ;
    	public readonly string $baseURI ;
    	public string $textContent ;
    	/* 方法 */
    	public __construct ([ string $version [, string $encoding ]] )
    	public createAttribute ( string $name ) : DOMAttr
    	public createAttributeNS ( string $namespaceURI , string $qualifiedName ) : DOMAttr
    	public createCDATASection ( string $data ) : DOMCDATASection
    	public createComment ( string $data ) : DOMComment
    	public createDocumentFragment ( void ) : DOMDocumentFragment
    	public createElement ( string $name [, string $value ] ) : DOMElement
    	public createElementNS ( string $namespaceURI , string $qualifiedName [, string $value ] ) : DOMElement
    	public createEntityReference ( string $name ) : DOMEntityReference
    	public createProcessingInstruction ( string $target [, string $data ] ) : DOMProcessingInstruction
    	public createTextNode ( string $content ) : DOMText
    	public getElementById ( string $elementId ) : DOMElement
    	public getElementsByTagName ( string $name ) : DOMNodeList
    	public getElementsByTagNameNS ( string $namespaceURI , string $localName ) : DOMNodeList
    	public importNode ( DOMNode $importedNode [, bool $deep = FALSE ] ) : DOMNode
    	public load ( string $filename [, int $options = 0 ] ) : mixed
    	public loadHTML ( string $source [, int $options = 0 ] ) : bool
    	public loadHTMLFile ( string $filename [, int $options = 0 ] ) : bool
    	public loadXML ( string $source [, int $options = 0 ] ) : mixed
    	public normalizeDocument ( void ) : void
    	public registerNodeClass ( string $baseclass , string $extendedclass ) : bool
    	public relaxNGValidate ( string $filename ) : bool
    	public relaxNGValidateSource ( string $source ) : bool
    	public save ( string $filename [, int $options = 0 ] ) : int
    	public saveHTML ([ DOMNode $node = NULL ] ) : string
    	public saveHTMLFile ( string $filename ) : int
    	public saveXML ([ DOMNode $node [, int $options = 0 ]] ) : string
    	public schemaValidate ( string $filename [, int $flags = 0 ] ) : bool
    	public schemaValidateSource ( string $source [, int $flags ] ) : bool
    	public validate ( void ) : bool
    	public xinclude ([ int $options = 0 ] ) : int
    	/* 继承的方法 */
    	public DOMNode::appendChild ( DOMNode $newnode ) : DOMNode
    	public DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) : string
    	public DOMNode::C14NFile ( string $uri [, bool $exclusive = FALSE [, bool $with_comments = FALSE [, array $xpath [, array $ns_prefixes ]]]] ) : int
    	public DOMNode::cloneNode ([ bool $deep ] ) : DOMNode
    	public DOMNode::getLineNo ( void ) : int
    	public DOMNode::getNodePath ( void ) : string
    	public DOMNode::hasAttributes ( void ) : bool
    	public DOMNode::hasChildNodes ( void ) : bool
    	public DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) : DOMNode
    	public DOMNode::isDefaultNamespace ( string $namespaceURI ) : bool
    	public DOMNode::isSameNode ( DOMNode $node ) : bool
    	public DOMNode::isSupported ( string $feature , string $version ) : bool
    	public DOMNode::lookupNamespaceUri ( string $prefix ) : string
    	public DOMNode::lookupPrefix ( string $namespaceURI ) : string
    	public DOMNode::normalize ( void ) : void
    	public DOMNode::removeChild ( DOMNode $oldnode ) : DOMNode
    	public DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) : DOMNode
    }