我正试图将元素附加到Domdocument中新建的节点中。
我有类似的东西
$dom = new DomDocument();
$dom->loadHTML($html]);
$xpath=new DOMXpath($dom);
$result = $xpath->query('//tbody');
if($result->length > 0){
$tbody = $dom->getElementsByTagName('tbody');
$table=$dom->createElement('table');
$table->appendChild($tbody);
}
我的tbody没有表标签,它就像
<tbody>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
….more
</tbody>
我想用table
标签包装它。
我的代码不起作用,它给了我类似的错误
PHP可捕获的致命错误:传递给DOMNode::appendChild()的参数1必须是DOMNode的实例、给定的DOMNodeList的实例、
我该如何解决此问题?谢谢
变量$tbody
不是单个<tbody>
元素;它是元素的集合——您正在"通过标记名称获取元素",可能有很多。如果您只想通过标记名查找元素,那么也绝对没有理由使用XPath。
改为:
$tbodies = $dom->getElementsByTagName('tbody');
foreach ($tbodies as $tbody) {
$table = $dom->createElement('table');
$tbody->parentNode->replaceChild($table, $tbody);
$table->appendChild($tbody);
}
在实际操作中查看。