2015-09-16 87 views
2

我需要获取元素的内容并将该内容放置到另一个元素中。我使用createTextNode将该内容作为子项追加到目标元素。如何使用HTML节点获取元素的内容?

当我将它作为文本节点追加时,<>转换为&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)));但相同的输出

+0

您可以使用'htmlspecialchars_decode'输出HTML应该。 – x3ns

+0

我试过,像'$ ch-> appendChild($ dom-> createTextNode(htmlspecialchars_decode($ pvalue))); '但是它的输出与textnode相同,否则应该在代码中使用该函数? – Learning

回答

2

如果你想

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

谢谢!在我的代码中使用'cloneNode(true)'的位置? – Learning

+0

这三种情况中的哪一种在你的情况下?移动,复制或转移? – VolkerK

+0

需要复制特定元素的节点(内容)到目标元素 – Learning

相关问题