您可以使用
例:
// just some setup
$dom = new DOMDocument;
$dom->loadXml('<html><body/></html>');
$body = $dom->documentElement->firstChild;
// this is the part you are looking for
$template = $dom->createDocumentFragment();
$template->appendXML('<h1>This is <em>my</em> template</h1>');
$body->appendChild($template);
// output
echo $dom->saveXml();
输出:
<?xml version="1.0"?>
<html><body><h1>This is <em>my</em> template</h1></body></html>
如果要从另一个 DOMDocument 导入,请将这三行替换为
$tpl = new DOMDocument;
$tpl->loadXml('<h1>This is <em>my</em> template</h1>');
$body->appendChild($dom->importNode($tpl->documentElement, TRUE));
用作 importNode
的第二个参数将执行节点树的递归导入。TRUE
如果需要导入(格式不正确的)HTML,请更改为 。这将触发 libxml 的 HTML 解析器(ext/DOM 内部使用):loadXml
loadHTML
libxml_use_internal_errors(true);
$tpl = new DOMDocument;
$tpl->loadHtml('<h1>This is <em>malformed</em> template</h2>');
$body->appendChild($dom->importNode($tpl->documentElement, TRUE));
libxml_use_internal_errors(false);
请注意,libxml 将尝试更正标记,例如,它会将错误的关闭更改为 。</h2>
</h1>