PHP Conference Japan 2024

DOMImplementation::createDocument

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocument 创建具有指定文档元素和类型的 DOMDocument 对象

说明

public DOMImplementation::createDocument(?string $namespace = null, string $qualifiedName = "", ?DOMDocumentType $doctype = null): DOMDocument

创建具有指定文档元素和类型的 DOMDocument 对象。

参数

namespace

要创建的文档元素的命名空间 URI。

qualifiedName

要创建的文档元素的限定名称。

doctype

要创建的文档类型或 null

返回值

一个新的 DOMDocument 对象。如果 namespacequalifiedNamedoctype 为 null,则返回的 DOMDocument 为空且没有文档元素。

错误/异常

DOM_WRONG_DOCUMENT_ERR

如果 doctype 已经被用于不同的文档或者是由不同的实现创建的,则抛出此错误。

DOM_NAMESPACE_ERR

如果根据 namespacequalifiedName 确定命名空间有错误,则抛出此错误。

更新日志

版本 说明
8.4.0 此函数现在具有暂定的返回类型 DOMDocument
8.0.3 namespace 现在可以为 null。
8.0.0 doctype 现在可以为 null。
8.0.0 现在静态调用此函数将抛出一个 Error。以前会引发 E_DEPRECATED

参见

添加注释

用户贡献的注释 3 条

up
7
eboyjr
14 年前
作为对另一个示例的补充,以下是如何创建具有 head、title 和 body 元素的 XHTML 1.0 过渡文档。

<?php

$document
= DOMImplementation::createDocument(null, 'html',
DOMImplementation::createDocumentType("html",
"-//W3C//DTD XHTML 1.0 Transitional//EN",
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"));
$document->formatOutput = true;

$html = $document->documentElement;
$head = $document->createElement('head');
$title = $document->createElement('title');
$text = $document->createTextNode('Title of Page');
$body = $document->createElement('body');

$title->appendChild($text);
$head->appendChild($title);
$html->appendChild($head);
$html->appendChild($body);

echo
$document->saveXML();
?>

输出:(由于垃圾邮件原因,http 链接已删除)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html xmlns="w3org1999xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Title of Page</title>
</head>
<body></body>
</html>

注意 saveXML 函数。如果改用 saveHTML,则会得到输出

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html>
<head><title>Title of Page</title></head>
<body></body>
</html>
up
2
arturm at union dot com dot pl
18 年前
要创建带有 doctype 的 HTML 文档

<?php
$doctype
= DOMImplementation::createDocumentType("html",
"-//W3C//DTD HTML 4.01//EN",
"http://www.w3.org/TR/html4/strict.dtd");
$doc = DOMImplementation::createDocument(null, 'html', $doctype);
?>
up
0
sleistico at gmail dot com
6 年前
我最近在使用此处列出的另一个示例中的调用类型时遇到了一个与弃用相关的错误。我必须改用以下方式...

$htmldoc = (new DOMImplementation)->createDocument(null, 'html', (new DOMImplementation)->createDocumentType("html"));

这将创建一个顶部带有 <!DOCTYPE html> 的文档。
To Top