【发布时间】:2011-06-12 16:38:57
【问题描述】:
有没有办法将源 html 附加到 DOMElement 中?像这样的:
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
它会解析那个片段,然后附加它。
【问题讨论】:
标签: php html dom appendchild
有没有办法将源 html 附加到 DOMElement 中?像这样的:
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
它会解析那个片段,然后附加它。
【问题讨论】:
标签: php html dom appendchild
你正在寻找
- DOMDocumentFragment::appendXML — Append raw XML data
手册示例:
$doc = new DOMDocument();
$doc->loadXML("<root/>");
$f = $doc->createDocumentFragment();
$f->appendXML("<foo>text</foo><bar>text2</bar>");
$doc->documentElement->appendChild($f);
echo $doc->saveXML();
【讨论】:
DOMDocument::saveHTML() 上得到output conversion failed due to conv error,则需要强制转换为特定的编码标准,例如通过utf8_encode().
如果您在范围内没有对document root 的引用,您始终可以通过任意节点的ownerDocument 属性访问它:
$frag = $trElement->ownerDocument->createDocumentFragment();
$frag->appendXML("<a href='?select_user=4'>Username</a>");
$trElement->appendChild($frag);
【讨论】:
是的,您可以使用DOMDocument::createDocumentFragment:
$fragment = $dom->createDocumentFragment();
$fragment->appendXML('<a href="select_user=4">Username</a>');
$element->appendChild($fragment);
在这种情况下,使用普通的createElement 调用会更简单:
$el = $dom->createElement('a', 'Username');
$el->setAttribute('href', 'select_user=4');
$element->appendChild($el);
在每种情况下,$element 都是您要附加代码的 DOM 元素。
【讨论】: