如何使用HTML节点获取元素的内容?

时间:2015-09-16 06:22:17

标签: php html dom domdocument

我需要获取元素的内容并将该内容放入另一个元素中。我使用createTextNode将该内容作为子元素附加到目标元素。

当我将其附加为文字节点时,<>会转换为&lt;&gt;。如何在不转换的情况下附加该内容?

例如:

<li id="fn1">
<div>
<a>some text
</a>
</div>
</li>

预期输出:

<p>
<div>
    <a>some text
    </a>
</div>
</p>

但我的输出就像,

<p>
&lt;div&gt;
&lt;a&gt;some text&lt;/a&gt;
&lt;/div&gt;
</p>

我的代码

$ch=dom->createElement("p");
$li=$xp->query("//li[contains(@id, 'fn')]");
  foreach($li as $liv) {
    $linodes = $liv->childNodes;
    $pvalue="";
       foreach ($linodes as $lin) {                                
       $pvalue.=$dom->saveXML($lin);}
$ch->appendChild($dom->createTextNode($pvalue)); }

我试过了, $ch->appendChild($dom->createTextNode(htmlspecialchars_decode($pvalue)));但输出相同

1 个答案:

答案 0 :(得分:2)

如果你想

  • 移动同一文档中的节点:通过DOMNode::removeChild删除该节点,并通过DOMNode::appendChild将该函数的返回值附加到其新的父节点。
  • 节点复制到同一文档中的新位置,通过DOMNode::clone节点对节点进行深度克隆并附加。
  • 节点转移到另一个文档,通过DOMDOcument::importNode将该节点导入新文档,然后将其附加到新的父级。