在Libxml中包装标签

时间:2018-10-04 17:50:54

标签: php libxml2

我目前基于现有的libxml代码构建,找不到详细的文档。

是否可以在节点周围包装标签?

我认为这会起作用:

$tags = $doc->getElementsByTagName( 'pre' );

foreach( $tags as $tag ):

    $handler = $doc->createElement( 'div' );
    $handler->setAttribute( 'class', 'pre_wrapper' );
    $newnode = $handler->appendChild( $tag );

    $tag->replaceNode( $newnode );

endforeach;

1 个答案:

答案 0 :(得分:1)

问题是$handler->appendChild($tag)从元素$tag的原始位置取消链接,因此后面的replaceNode并没有达到预期的效果。这意味着您必须调换呼叫顺序。另外,我找不到replaceNode方法,但是必须在父节点上调用replaceChild

# Create wrapper element
$handler = $doc->createElement('div');
$handler->setAttribute('class', 'pre_wrapper');
# Replace wrapped element with wrapper
$tag->parentNode->replaceChild($handler, $tag);
# Move wrapped element into wrapper
$handler->appendChild($tag);

Try it online!