1

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

我该如何解决这个问题?谢谢!

4

1 回答 1

3

变量$tbody不是单个<tbody>元素;它是元素的集合——你是“通过标签名称获取元素”,并且可以有很多。如果您只想按标签名称查找元素,那么绝对没有理由使用 XPath。

改为这样做:

$tbodies = $dom->getElementsByTagName('tbody');
foreach ($tbodies as $tbody) {
    $table = $dom->createElement('table');
    $tbody->parentNode->replaceChild($table, $tbody);
    $table->appendChild($tbody);
}

看到它在行动

于 2013-08-27T22:22:03.083 回答