2016-03-03 214 views
1

是否有辦法將DOMXpath對象轉換回HTML?我想,以取代HTML將DOMXpath轉換爲HTML字符串

<div class='original'>Stuff</div> 

的一個部分替換爲:

<div class='replacement'>New Stuff</div> 

,然後將其返回到有效的XPath。我知道函數DOMDocument :: saveHTML存在,但如果我做

XPATH->saveHTML(); 

我得到一個錯誤。任何意見,將不勝感激。

回答

1

看起來像an XY problemDOMXPath總是適用於DOMDocument實例,因此您應該始終保存DOMDocument。見下文一個工作演示的例子:

<?php 
    $xml = "<parent><div class='original'>Stuff</div></parent>"; 
    $doc = new DOMDocument(); 
    $doc->loadXML($xml); 
    $xpath = new DOMXpath($doc); 

    //get element to be replaced 
    $old = $xpath->query("/parent/div")->item(0); 

    //create new element for replacement 
    $new = $doc->createElement("div"); 
    $new->setAttribute("class", "replacement"); 
    $new->nodeValue = "New Stuff"; 

    //replace old element with the new one 
    $old->parentNode->replaceChild($new, $old); 

    //TODO: save the modified HTML instead of echo 
    echo $doc->saveHTML(); 
?> 

eval.in demo

輸出:

<parent><div class="replacement">New Stuff</div></parent>