【问题标题】:Wrap tag in Libxml在 Libxml 中包装标签
【发布时间】:2018-10-04 17:50:54
【问题描述】:

我目前是在现有的 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;

【问题讨论】:

    标签: php libxml2


    【解决方案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!

    【讨论】:

    • 不错的一个:) 谢谢。我摆弄了很长时间,但无法弄清楚:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多