我目前基于现有的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;
答案 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);