【发布时间】:2020-02-19 10:02:24
【问题描述】:
例如,我创建了一个 DOMDocument 像这样:
<?php
$implementation = new DOMImplementation();
$dtd =
$implementation->createDocumentType
(
'html', // qualifiedName
'-//W3C//DTD XHTML 1.0 Transitional//EN', // publicId
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-'
.'transitional.dtd' // systemId
);
$document = $implementation->createDocument('', '', $dtd);
$elementHtml = $document->createElement('html');
$elementHead = $document->createElement('head');
$elementBody = $document->createElement('body');
$elementTitle = $document->createElement('title');
$textTitre = $document->createTextNode('My bweb page');
$attrLang = $document->createAttribute('lang');
$attrLang->value = 'en';
$document->appendChild($elementHtml);
$elementHtml->appendChild($elementHead);
$elementHtml->appendChild($attrLang);
$elementHead->appendChild($elementTitle);
$elementTitle->appendChild($textTitre);
$elementHtml->appendChild($elementBody);
所以,现在,如果我有一些这样的 xhtml 字符串:
<?php
$xhtml = '<h1>Hello</h1><p>World</p>';
如何将其导入我的DOMDocument 的<body> 节点?
目前,我找到的唯一解决方案是这样的:
<?php
$simpleXmlElement = new SimpleXMLElement($xhtml);
$domElement = dom_import_simplexml($simpleXmlElement);
$domElement = $document->importNode($domElement, true);
$elementBody->appendChild($domElement);
这个解决方案对我来说似乎很糟糕,并且会产生一些问题,比如当我尝试使用这样的字符串时:
<?php
$xhtml = '<p>Hello World</p>';
好的,我可以通过将xhtml实体转换成Unicode实体来绕过这个问题,但是实在是太难看了……
有什么帮助吗?
提前致谢!
相关问题:
【问题讨论】:
标签: php xml xhtml simplexml domdocument