Php 简明教程

PHP - DOM Parser Example

PHP 中的 DOM 扩展提供广泛的功能,我们可借此对 XML 和 HTML 文档执行各种操作。我们可以动态构造一个 DOM 对象,从一个 HTML 文件或包含 HTML 标记树的字符串加载一个 DOM 文档。我们还可以将 DOM 文档保存到 XML 文件中,或者从 XML 文档中提取 DOM 树。

DOMDocument 类是 DOM 扩展中定义的最重要类之一。

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

它表示整个 HTML 或 XML 文档;用作文档树的根。DOMDocument 类包括许多静态方法的定义,其中一些如下 -

Sr.No

Methods & Description

1

createElement Create new element node

2

createAttribute Create new attribute

3

createTextNode Create new text node

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 树转存储回字符串

Example

让我们对以下 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 />';
   }

?>

它将生成以下 output

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
________________________________________