如何使用php将元素附加到另一个元素

时间:2013-08-27 22:12:30

标签: domdocument php

我正在尝试将元素附加到我在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的实例,

如何解决此问题?谢谢!

1 个答案:

答案 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