Обернуть тег в Libxml
В настоящее время я строю поверх существующего кода 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;
2
Author: Johannes Grandy, 2018-10-04
1 answers
Проблема в том, что $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);
1
Author: nwellnhof, 2018-10-05 13:14:47