2015-09-16 126 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

相關問題