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
________________________________________
广告