我想用新表替换php dom对象中的第三个表。我可以通过
选择它$table = $dom->getElementsByTagName('table')->item(3);
我试过
$table->parentNode->appendChild($new_table);
它说
Catchable fatal error: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, string given in C:\xampp\htdocs\index.php on line 73
有人可以解释代码有什么问题或我如何纠正它?
$new_table = "<table width='100%' bgcolor='#000'>$table_rows</table>";
答案 0 :(得分:1)
在添加表格片段之前,您必须使用createElement创建表格片段。
您还可以使用appendXML从XML创建片段,然后使用appendChild
附加该片段
$fragment = $dom->createDocumentFragment();
$fragment->appendXML("<table width='100%' bgcolor='#000'>$table_rows</table>");
// now append the fragment
$table->parentNode->appendChild($fragment);
以下是一个有效的例子:http://ideone.com/0Lx742
答案 1 :(得分:0)
Miky的答案是第1步:你必须将你的元素构建为DOM节点。
$new_table = $dom->createElement("table");
$new_table->setAttribute("width","100%");
$new_table->setAttribute("bgcolor","#000");
foreach($table_rows as $row) $new_table->appendChild($row);
// the above assumes $table_rows is an array of TR nodes, not strings!
第2步是:
$table->parentNode->replaceChild($new_table,$table);
答案 2 :(得分:0)
我通过从下面的答案和更多的研究中提取想法来实现它。
$table = $dom->getElementsByTagName('table')->item(3);
$new_table = $dom->createDocumentFragment();
$new_table->appendXML("<table width='100%' bgcolor='#EEEEEE'>$table_rows</table>");
$table->parentNode->replaceChild($new_table,$table);
实际问题在于我的$ table_rows数组,每行包含一些额外的属性,如“colspan”,$ nbsp;还有一些额外的标签。
感谢你们的关心和支持。