DOM Document Object Model
預先定義常數
下列常數由此擴充定義,且僅在此擴充功能編譯入 PHP 或在執行時動態載入時可用。
XML 常數常數 值 描述
XML_ELEMENT_NODE(整數) 1 ttr
XML_TEXT_NODE(整數) 3 節點為DOMText
XML_CDATA_SECTION_NODE(整數) 4 XML_CDATA_SECTION_NODE(整數) 4 ) ) 5 節點為DOMEntityReference
XML_ENTITY_NODE(整數) 6 節點
XML_COMMENT_NODE(整數) 8 節點是DOMComment
XML_DOCUMENT_NODE (整數) 9 XML_DOCUMENT_NODE (整數) 9 整數) ) 10 節點是 ) 10 節點為DOMDocumentType
XML_DOCUMENT_FRAG_NODE(整數) 11 節點是一個DOMNotation
XML_HTML_DOCUMENT_ NODE(整數) 13
XML_DTD_NODE(整數)
XML 15
XML_ATTRIBUTE_DECL_NODE(整數) 16
XML_ENTITY_DECL_NODE(整數) 17
XML 整數) 1
XML_ATTRIBUTE_ID(整數) ger) 2
XML_ATTRIBUTE_IDRERE(整數) REFS(整數) 4
XML_ATTRIBUTE_ENTITY(整數) 5
XML_AT TRIBUTE_NMTOKEN (整數) 7
XML_ATTRIBUTE_NMTOKENS (整數) 8
ATTRIBUTE_NOTATION (整數) 10
DOMException 常數常數 值 說明
用於 PHP 錯誤。
DOM_INDEX_SIZE_ERR (整數) 1 若索引或大小為負數,或大於允許的值。
DOMSTRING_SIZE_ERR (整數) 2 若指定的文字範圍不適用於 DOMString。
DOM_HIERARCHY_REQUEST_ERR (整數) 3如果任何節點被插入到不屬於它的位置
DOM_WRONG_DOCUMENT_ERR (整數) 系統
DOM_INVALID_CHARACTER_ERR (整數) 5 如果指定了無效或不合法的字符,例如名稱中。
DOM_NO_DATA_ALLOWED_ERR (整數) 6 如果使用未支援資料的節點指定了資料。
DOM_NO_MODIFICATION_ALLOWED_ERR (整數) 7 如果嘗試修改不允許修改的物件。
DOM_NOT_FOUND_ ERR(整數) 8如果嘗試在沒有的上下文中引用節點。
DOM_NOT_SUPPORTED_ERR(整數) 9 如果已實現不支援請求的物件或作業類型。
DOM_INUSE_ATTRIBUTE_ERR(整數) 10 若嘗試新增已在其他地方使用的屬性。
DOM_INVALID_STATE_ERR (整數) 11 若嘗試使用不可用或已使用的物件。
DOM_SYNTAX_ERR (整數) 12 如果指定了無效或非法的字串。
DOM_INVALID_MODIFICATION_ERR (整數) 13 若嘗試修改底層物件的型別。
DOM_NAMESPACE_ERR(整數) 14 若嘗試以與命名空間相關的不正確的方式建立或變更物件。
DOM_INVALID_ACCESS_ERR(整數) 15 如果參數或操作底層物件不支援。
DOM_VALIDATION_ERR (integer) 16 如果調用insertBefore 或removeChild 等方法會使Node 在「部分有效性」方面無效,則會引發 /* 屬性*/
公用唯讀字串$nodeName ; //傳回目前節點型態最精確的名稱
,取決於其型別
public readonly int $nodeType ; //取得節點的型別。預先定義的 XML_xxx_NODE 常數之一 public readonly DOMNode $parentNode ; //節點的父節點 若沒有子點,
// 這是一個空的 DOMNodeList。
public readonly DOMNode $firstChild ; //此節點的第一子節點。如果沒有這樣的節點,則傳回 NULL。
public readonly DOMNode $lastChild ; //此節點的最後子節點。如果沒有這樣的節點,則傳回 NULL。
public readonly DOMNode $previousSibling ; //緊接在該節點之前的節點。如果沒有這樣的節點,則傳回 NULL。
public readonly DOMNode $nextSibling ; //則已緊接著該節點的節點。如果沒有這樣的節點,則傳回 NULL。
public readonly DOMNamedNodeMap $attributes ; //包含此節點屬性的 DOMNamedNodeMap(如果它是 DOMElement)
//否則為 NULL。
公共唯讀 DOMDocument $ownerDocument ; //與此節點關聯的 DOMDocument 物件。
public readonly string $namespaceURI ; //此節點的命名空間URI,若未指定則為NULL。
public string $prefix ;
public readonly string $localName ; //則已傳回該節點限定名的本地部分。
public readonly string $baseURI ; //此節點的絕對基本 URI,若實作無法實現,則為 NULL
絕對URI。
public readonly string $textContent ; //此屬性傳回該節點及其後代的文字內容物。
/* 方法*/
public DOMNodeappendChild ( DOMNode $newnode ) , array $ns_prefixes ]]] ] ) 將節點規範化為字串
public int C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) OM 將([ bool $deep=False ] ) 複製節點
public int getLineNo ( void ) 取得一個節點的XPath
public bool hasAttributes ( void ) 檢查節點是否具備屬性
public bool hasChildNodes ( void ) 檢查節點是否有子節點
public DOMNode insertBefore ( DOMNode $newnode [, DOM string $namespaceURI ) 以檢查指定的命名空間URI是否為預設命名空間
public bool isSameNode ( DOMNode $node ) 檢視指定版本是否支援此功能
public stringlookupNamespaceURI ( string $prefix ) 根據前綴獲取節點的命名空間URI
public string LookupPrefix ( string $namespaceURI ) 根據命名空間URI 獲取節點的命名空間前綴
public void normalize ( void ) 規範化節點
public DOMNode removeChild ( DOMNode $oldnode ) 從子節點列表中刪除子節點
public DOMNode ReplaceChild ( DOMNode $newnode , DOMNode $oldnode ) 替換子節點
}
DOMNamedNodeMap 實作Tan 地圖中的節點數。有效子節點索引的範圍是 0 到 length - 1(含)。
/* 方法*/
DOMNode getNamedItem ( string $name ) 檢索名稱指定的節點
DOMNode getNamedItemNS ( string $named
DOMNode item ( int $index ) 檢索索引指定的節點
}
DOMNotation extends DOMNode {
/* 屬性*/
readonly public string $publicId ;
readonly public string $system
DOMProcessingInstruction extends DOMNode {
/* 屬性*/
readonly public string 方法*/
public __construct ( string $name [, string $value ] )
}
DOMAttr 表示DOMElement物件屬性.
DOMAttr extends DOMNode {
/* 屬性*/
public readonly string $name ; // public readonly bool $schemaTypeInfo ; //目前未來實作為NULL
public readonly bool $specified ; //目前未來實作為NULL
//屬性值
/* 方法*/
public __construct ( string $name [, string $value ] )
public bool isId ( void )
}
DOMNodeList implements Traversable {
/* 屬性*/
readonly public int $length ; th - 1 inclusive.
/ * 方法*/
DOMNode DOMNodelist::item ( int $index ) Retrieves a node specified by index
}
DOMXPath { /* 方法*/
public __construct ( DOMDocument $ doc )
public mixed evaluate ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] ) E值ion [, DOMNode $contextnode [, bool $registerNodeNS = true ]] ) Evaluates the given XPath expression
public bool registerNamespace ( string $prefix , string $namespaceURI ) PhpFunctions ([ mixed $restrict ] ) Register PHP functions as XPath functions
}
DOMElement 擴充 DOMNode {
/* 屬性*/
readonly public bool $schemaTypeInfo ; 元素名稱
/* 方法*/
public __construct ( string $name [, string $value [, string $namespaceURI ]] ) 建立新的DOMElement 物件
public string getAttribute ( string $name )
public DOMAttr getAttributeNodeNS ( string $namespaceURI , string $localName )
public string 。 Attribute ( string $name )
public bool hasAttributeNS ( string $ namespaceURI , string $localName )
public bool removeAttribute ( string $name )
public bool removeAttributeNode ( DOMAttr$oldnode )
public bool removeAttributeNode ( DOMAttr $oldnode )
化
public DOMAttr setAttribute ( string $name , string $value )
public D。 public void setIdAttribute ( string $name , bool $isId )
public void setIdAttributeNode ( DOMAttr $attr , bool $isId )
public void setIdAttributeNS ( string $namespaceURI , string $localName , bool $isࠎ沒有節點直接對應於該類,但其他節點繼承自該類。
DOM?
readonly public int $length ; 內容的長度。
/* 方法*/
void appendData ( string $data ) 將字串追加到節點的字元資料末端
void insertData ( int $offset , string $data ) 在指定的16 位元單位偏移處插入字串
void ReplaceData ( int $offset , int $count , string $data ) $count ) 從節點擷取一定範圍的資料
}
DOMText DOMText 類別繼承自DOMCharacterData,表示DOMElement 或DOMAttr 的文字內容。
DOMText 擴充 DOMCharacterData {
/* 屬性 * /
唯讀公有字串 $wholeText ; 儲存邏輯上相鄰的(不使用元素、註解或處理指令分隔)文字節點的所有文字。
/* 方法*/
public __construct ([ string $value ] ) 建立一個新的文字
public DOMText splitText ( int $offset ) 將此節點按指定偏移分成兩個節點
}
DOMCdataSection DOMCdataSection 繼承自DOMText,用於CData 建構的文字表示。
DOMCdataSection 擴充 DOMText {
/ * 方法 */
public __construct ( string $value )
}
DOMComment 表示註解節點,字元以 分隔。
DOMComment extends DOMCharacterData {
/* method */
public __construct ([ string $value ] )
}
DOMDocument類型
DOMDocumentType extends DOMNode {
/* 屬性 */
readonly public string $publicId ; 外部子集的公共識別碼。
readonly public string $systemId ; 外部子集的系統識別碼。這可能是絕對 URI,也可能不是。
readonly public string $name ; DTD 的名稱;即緊接在 DOCTYPE 關鍵字後面的名稱。
readonly public DOMNamedNodeMap $entities ; 包含 DTD 中宣告的一般實體(外部和內部)的 DOMNamedNodeMap。
readonly public DOMNamedNodeMap $notations ; 包含 DTD 中宣告的符號的 DOMNamedNodeMap。
只讀公有字串 $internalSubset ; 內部子集為字串,若沒有則為 null。它不包含分隔方括號。
}
DOMDocumentFragment 擴充 DOMNode {
public bool appendXML ( string $data ) 附加原始 XML 資料
}
DOMEntity 附加原始 XML 資料
}
DOMEntity
DOMEntity 擴充 DOMNode {
/* 屬性 */
唯讀公有字串 $publicId ; 實體相關的公用識別碼(若指定),否則為 NULL。
readonly public string $systemId ; 若指定,則實體關聯的系統識別符,否則為 NULL。這可能是絕對 URI,也可能不是。
只讀公有字串 $notationName ; 未解析的實體,實體的表示法名稱。對於已解析的實體,這是 NULL。
public string $actualEncoding ; 當該實體是外部已解析實體時,並指定在解析時用於該實體的編碼的屬性。如果它是來自內部子集的實體或未知,則為 NULL。
readonly public string $encoding ; 當實體是外部解析實體時,並作為文字宣告的一部分指定該實體的編碼的屬性。否則為 NULL。
readonly public string $version ; 當實體為外部解析實體時,並指定為實體的版本編號作為文字宣告的屬性。否則為 NULL。
}
DOMEntityReference 擴充 DOMNode {🎜 public __construct ( string $name )🎜}
Exception {
/* 屬性*/
protected string $message ; 例外訊息內容
protectedint $ 拋出例外的檔案名稱
protected int $line ; 以該文件中的行號
/* 方法*/
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void ) 獲取異常消息內容
final public Exception getPrevious ( void ) 返回異常鏈中的前一個異常
final public int getCode ( void ) ( void ) 取得異常發生的程式檔案名稱
final public int getLine ( void ) 有異常的程式碼在檔案中的行號
final public array getTrace ( void 取得字串型態的異常追蹤資訊
public string __toString ( void ) 將例外物件轉換為字串
final private void __clone ( void ) 異常克隆
}
DOMException for logical reasons.
DOMException extends Exception {
/* 屬性*/
readonly public int $code ; An integer indicating the type of error generated
}
DOMImplementation The DOMImplementation interfacem) a number of method per performing for performat) ect model.
DOMImplementation {
/* 方法*/
__construct ( void )
public DOMDocument createDocument ([ string $namespaceURI = NULL [, string $qualified錯誤document element
public DOMDocumentType createDocumentType ([ string $qualifiedName = NULL [, string $publicId = NULL [, string $systemId = NULL ]]] ) ) Test if the DOM implementation implements a specific feature
}
DOMDocument 擴充 DOMNode {
/* 屬性 */
只讀公用字串 $actualEncoding ; 則已棄用。文件的實際編碼,是相當於編碼的唯讀。
readonly public DOMConfiguration $config ; 已棄用。呼叫 DOMDocument::normalizeDocument() 時所使用的配置。
readonly public DOMDocumentType $doctype ; 與此文件關聯的文件類型聲明。
readonly public DOMElement $documentElement ; 這是一個方便的屬性,允許直接存取作為文件的文檔元素的子節點。
public string $documentURI ; 文檔的位置,而未定義則為 NULL。
public string $encoding ; 文件的編碼,並以 XML 聲明指定。此屬性並未出現在最終的 DOM Level 3 規格中,但卻是唯一在此實作中操作 XML 文件編碼的方法。
public bool $formatOutput ; 透過縮排和額外空格來充分格式化輸出。
readonly public DOMImplementation $implementation ; 處理此文件的 DOMImplementation 物件。
public bool $preserveWhiteSpace = true ; 請勿刪除多餘的空白。預設為 TRUE。
public bool $recover ; 所有權。啟用復原模式,即嘗試解析格式不正確的文件。該屬性不是 DOM 規範的一部分,而是特定於 libxml 的。
public bool $resolveExternals ; 將其設為 TRUE 以從文件類型宣告載入外部實體。這對於在 XML 文件中包含字元實體非常有用。
public bool $standalone ; 已被使用。文件是否獨立(由 XML 宣告指定)對應於 xmlStandalone.
public bool $strictErrorChecking = true ; 錯誤時拋出 DOMException。預設為 TRUE。
public bool $substituteEntities ; 擁有。是否替換實體。該屬性不是 DOM 規範的一部分,而是特定於 libxml 的。
public bool $validateOnParse = false ; 載入並依 DTD 驗證。預設為 FALSE。
公有字串 $version ; 則已被使用。 XML 的版本,對應 xmlVersion.
readonly public string $xmlEncoding ; 作為 XML 宣告的一部分,並指定此文件的編碼的屬性。當未指定或未知時(例如當 Document 在記憶體中建立時),此值為 NULL。
public bool $xmlStandalone ; 為 XML 宣告的一部分,指定此文件是否獨立的屬性。未指定時為 FALSE。
public string $xmlVersion ; 作為 XML 宣告的一部分,並指定此文件的版本號碼的屬性。如果沒有聲明,且本文檔支援「XML」功能,則值為「1.0」。
/* 方法*/
public __construct ([ string $version [, string $encoding ]] )
我 string $namespaceURI , string $qualifiedName ) 建立具有關聯命名空間的新屬性節點
public DOMCDATASection createCDATASection ( string $data )
public DOMComment createComment ( string $data )
. ing $name [, string $value ] )
public DOMElement createElementNS ( string $namespaceURI , string $qualifiedName [, string $value ] )
public DOMEntityReference createEntityReference ( string $name )
public DOMProcessingInstruction createProcessingInstruction ( string $target [, string $data ] )
elementId ) 搜尋具有特定id 的元素
public DOMNodeList getElementsByTagName ( string $name ) 搜尋所有給定本地標籤名稱的所有元素
public DOMNodeList getElementsByTagNameNS OMNode importNode ( DOMNode $ importedNode [ , bool $deep ] ) 將節點匯入目前文件
public mix load ( string $filename [, int $options = 0 ] ) $options = 0 ] )從字串載入HTML
public bool loadHTMLFile ( string $filename [, int $options = 0 ] ) 從檔案中載入HTML
public mix loadXML (string $. XML
public void normalizeDocument ( void ) 的擴充類別
public boolrelaxNGValidate ( string $filename ) 執行string $source ) 地([ DOMNode $node = NULL ] ) 轉儲使用HTML格式將內部文件轉儲至字串中
public int saveHTMLFile ( string $filename ) 使用HTML 格式將內部文件轉儲至檔案中
) $ 將內部XML樹轉儲回來轉換為字串
public bool schemaValidate ( string $filename [, int $flags ] ) 基於schema 驗證文件
public public bool validate ( void ) 地
<?php $url = 'http://movie.douban.com/category/' ; function getPage($url) { $curl = curl_init(); $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; $header[] = "Cache-Control: max-age=0"; $header[] = "Connection: keep-alive"; $header[] = "Keep-Alive: 300"; $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; $header[] = "Accept-Language: en-us,en;q=0.5"; $header[] = "Pragma: "; // browsers keep this blank. curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)'); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_REFERER, 'http://www.baidu.com'); curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($curl, CURLOPT_AUTOREFERER, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $html = curl_exec($curl); curl_close($curl); return $html; } $text = getPage($url); $xml = new DOMDocument(); $xml->loadHTMLFile("test.html"); $xml->encoding='UTF-8'; $xpath=new DOMXpath($xml); $elements = $xpath->query("/html/body//div[@id='type']/ul"); var_dump($elements); foreach ( $elements as $e){ foreach ($e->childNodes as $es){ var_dump($es->nodeValue); } } ?>