2012-01-19 59 views
0

我對我自己的模板系統使用簡單的HTML DOM解析器,發現問題。簡單的HTML DOM解析器沒有更新

這裏是我的標記:

<div class=content> 
    <div class=navigation></div> 
</div> 

我用自己的內容替換div.navigation這樣的:

$navi= $dom->find("div.navigation",0); 
$navi->outertext = "<a class=aNavi>click me!</a>"; 

很好地工作 - 我可以重複它,但問題是 - 我呼應前仍然想要使用解析器訪問/操作該鏈接,但解析器不會找到它。

$link = $dom->find("a.aNavi"); 

將返回null :(

好像解析器需要刷新/改變outertext後更新 - 任何想法,如果有可能

+1

因爲你的'a.aNavi'不在DOM中。它只是單獨對象(或實例)的一些元素。 – YuS

+0

但它的來源..我怎麼能解決它? – Fuxi

+1

'$ dom'究竟是什麼?它看起來不是[DOMDocument](http://us2.php.net/manual/en/class.domdocument.php),因爲該類沒有'find()'方法或'outertext'屬性。 – FtDRbwLXw6

回答

2

我沒有看到任何createElement樣方法the API reference,這意味着無論是文檔不完整或者您使用的是錯誤的工作工具。

我建議使用DOMDocumentDOMDocument::createElement()方法。但是,如果你使用簡單的HTML DOM解析器,你可以嘗試這個黑客:

$navi = $dom->find('div.navigation', 0); 
$navi->outertext = '<a class="aNavi">click me!</a>'; 
$dom = $dom->save(); 
$dom = str_get_html($dom); 
$link = $dom->find('a.aNavi'); 
+0

是的,我已經這樣做了,但它很髒:) 因爲我仍然在開始我想這是更好使用DOMDocument - 謝謝! – Fuxi