PHP - DOM 解析器示例



PHP 中的 DOM 擴充套件具有廣泛的功能,我們可以使用它對 XML 和 HTML 文件執行各種操作。我們可以動態地構造 DOM 物件,從 HTML 檔案或包含 HTML 標籤樹的字串載入 DOM 文件。我們還可以將 DOM 文件儲存到 XML 檔案,或從 XML 文件中提取 DOM 樹。

DOMDocument 類是 DOM 擴充套件中定義的最重要的類之一。

$obj = new DOMDocument($version = "1.0", $encoding = "")

它表示整個 HTML 或 XML 文件;作為文件樹的根。DOMDocument 類包含許多靜態方法的定義,其中一些方法在此介紹 -

序號 方法和描述
1

createElement

建立新的元素節點

2

createAttribute

建立新的屬性

3

createTextNode

建立新的文字節點

4

getElementById

搜尋具有特定 ID 的元素

5

getElementsByTagName

搜尋所有具有給定區域性標籤名稱的元素

6

load

從檔案載入 XML

7

loadHTML

從字串載入 HTML

8

loadHTMLFile

從檔案載入 HTML

9

loadXML

從字串載入 XML

10

save

將內部 XML 樹轉儲迴文件

11

saveHTML

使用 HTML 格式將內部文件轉儲到字串中

12

saveHTMLFile

使用 HTML 格式將內部文件轉儲到檔案中

13

saveXML

將內部 XML 樹轉儲回字符串中

示例

讓我們在此示例中使用以下 HTML 檔案 -

<html>
<head> 
   <title>Tutorialspoint</title>
</head> 
<body> 
   <h2>Course details</h2> 
   <table border = "0"> 
      <tbody> 
         <tr> 
            <td>Android</td> 
            <td>Gopal</td> 
            <td>Sairam</td> 
         </tr>
         <tr> 
            <td>Hadoop</td> 
            <td>Gopal</td> 
            <td>Satish</td> 
         </tr> 
         <tr> 
            <td>HTML</td> 
            <td>Gopal</td> 
            <td>Raju</td> 
         </tr> 
         <tr> 
            <td>Web technologies</td> 
            <td>Gopal</td> 
            <td>Javed</td> 
         </tr> 
         <tr> 
            <td>Graphic</td> 
            <td>Gopal</td> 
            <td>Satish</td> 
         </tr> 
         <tr> 
            <td>Writer</td> 
            <td>Kiran</td> 
            <td>Amith</td> 
         </tr> 
         <tr> 
            <td>Writer</td> 
            <td>Kiran</td> 
            <td>Vineeth</td> 
         </tr> 
      </tbody> 
   </table> 
</body> 
</html>

我們現在將透過在以下 PHP 程式碼中呼叫 loadHTMLFile() 方法來從上面的 HTML 檔案中提取文件物件模型 -

<?php 

   /*** a new dom object ***/ 
   $dom = new domDocument; 

   /*** load the html into the object ***/ 
   $dom->loadHTMLFile("hello.html");

   /*** discard white space ***/ 
   $dom->preserveWhiteSpace = false; 

   /*** the table by its tag name ***/ 
   $tables = $dom->getElementsByTagName('table'); 

   /*** get all rows from the table ***/ 
   $rows = $tables[0]->getElementsByTagName('tr'); 

   /*** loop over the table rows ***/ 
   foreach ($rows as $row) {
   
      /*** get each column by tag name ***/ 
      $cols = $row->getElementsByTagName('td'); 

      /*** echo the values ***/ 
      echo 'Designation: '.$cols->item(0)->nodeValue.'<br />'; 
      echo 'Manager: '.$cols->item(1)->nodeValue.'<br />'; 
      echo 'Team: '.$cols->item(2)->nodeValue; 
      echo '<hr />'; 
   }
   
?>

它將產生以下 **輸出** -

Designation: Android
Manager: Gopal
Team: Sairam
________________________________________
Designation: Hadoop
Manager: Gopal
Team: Satish
________________________________________
Designation: HTML
Manager: Gopal
Team: Raju
________________________________________
Designation: Web technologies
Manager: Gopal
Team: Javed
________________________________________
Designation: Graphic
Manager: Gopal
Team: Satish
________________________________________
Designation: Writer
Manager: Kiran
Team: Amith
________________________________________
Designation: Writer
Manager: Kiran
Team: Vineeth
________________________________________
廣告