PHP 的 DOM 扩展具有广泛的功能,我们可以使用它们对 XML 和 HTML 文档执行各种操作。我们可以动态构造一个 DOM 对象,从 HTML 文件加载 DOM 文档,或者使用 HTML 标签树加载一个字符串。我们还可以将 DOM 文档保存到 XML 文件,或从 XML 文档中提取 DOM 树。
DOMDocument 类是 DOM 扩展中定义的最重要的类之一。
$obj = new DOMDocument($version = "1.0", $encoding = "")
它表示整个 HTML 或 XML 文档;用作文档树的根。DOMDocument 类包括许多静态方法的定义,其中一些方法在这里介绍 -
方法 | 描述 |
---|---|
createElement | 创建新元素节点 |
createAttribute | 创建新属性 |
createTextNode | 创建新文本节点 |
getElementById | 搜索具有特定 ID 的元素 |
getElementsByTagName | 搜索具有给定本地标记名称的所有元素 |
load | 从文件加载 XML |
loadHTML | 从字符串加载 HTML |
loadHTMLFile | 从文件加载 HTML |
loadXML | 从字符串加载 XML |
save | 将内部 XML 树转储回文件中 |
saveHTML | 使用 HTML 格式将内部文档转储为字符串 |
saveHTMLFile | 使用 HTML 格式将内部文档转储到文件中 |
saveXML | 将内部 XML 树转储回字符串 |
例子
让我们使用以下 HTML 文件作为此示例 -
<html>
<head>
<title>qikepu.com</title>
</head>
<body>
<h2>课程详情</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 科技</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
/*** 一个新的dom对象 ***/
$dom = new domDocument;
/*** 将html加载到对象中 ***/
$dom->loadHTMLFile("hello.php");
/*** 丢弃空白 ***/
$dom->preserveWhiteSpace = false;
/*** 按标签名显示表 ***/
$tables = $dom->getElementsByTagName('table');
/*** 使用 iterator_to_array() 函数转换为数组***/
$tables = iterator_to_array($tables);
/*** 从表中获取所有行 ***/
$rows = $tables[0]->getElementsByTagName('tr');
/*** 遍历表行 ***/
foreach ($rows as $row) {
/*** 按标签名称获取每一列 ***/
$cols = $row->getElementsByTagName('td');
/*** 呼应这些值 ***/
echo 'Designation: '.$cols->item(0)->nodeValue.'<br />';
echo 'Manager: '.$cols->item(1)->nodeValue.'<br />';
echo 'Team: '.$cols->item(2)->nodeValue;
echo '<hr />';
}
?>
将产生以下输出 -