在带DOM的PHP中,我有一个代表<identity />元素的DomElement对象.
我有一个案例,我需要更改它,因此它的元素名称是<person />,但保持相同的子元素和属性.
更改DomElement的元素名称并保留其子项和属性的最简单方法是什么?
编辑:我刚刚发现了一个非常相似的问题(尽管它没有很好的答案).
我正在尝试使用php中的DOMDocument :: loadHTML编辑html标签.html数据是html的一部分,而不是整个页面.我按照这个页面(PHP - DOMDocument - 需要更改/替换现有的HTML标签w/new)说.
这应该将pre标签转换为div标签,但是它会给出"致命错误:未捕获异常'DOMException',消息'找不到错误'."
<?php
$contents = <<<STR
<pre>hi</pre>
<pre>hello</pre>
<pre>bye</pre>
STR;
$dom = new DOMDocument;
@$dom->loadHTML($contents);
foreach( $dom->getElementsByTagName("pre") as $nodePre ) {
$nodeDiv = $dom->createElement("div", $nodePre->nodeValue);
$dom->replaceChild($nodeDiv, $nodePre);
}
echo $dom->saveHTML();
?>
Run Code Online (Sandbox Code Playgroud)
[编辑]当我试图向后迭代节点对象时,我收到此错误,"注意:尝试获取非对象的属性......"
<?php
$contents = <<<STR
<pre>hi</pre>
<pre>hello</pre>
<pre>bye</pre>
STR;
$dom = new DOMDocument;
@$dom->loadHTML($contents);
$domPre = $dom->getElementsByTagName('pre');
$length = $domPre->length;
For ($i = $length; $i > -1 ; $i--) {
$nodePre = $domPre->item($i);
echo $nodePre->nodeValue . '<br />';
// $nodeDiv = …Run Code Online (Sandbox Code Playgroud)