我正在尝试将元素附加到我在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 Catchable致命错误:传递给DOMNode :: appendChild()的参数1必须是DOMNode的一个实例,给出DOMNodeList的实例,
如何解决此问题?谢谢!
答案 0 :(得分:3)
变量$tbody
不是单个<tbody>
元素;它是元素的集合 - 你是“按标签名称获取元素”,并且可以有很多元素。如果你想要的只是按标签名称找到元素,那么绝对没有理由使用XPath。
请改为:
$tbodies = $dom->getElementsByTagName('tbody');
foreach ($tbodies as $tbody) {
$table = $dom->createElement('table');
$tbody->parentNode->replaceChild($table, $tbody);
$table->appendChild($tbody);
}
<强> See it in action 强>