简单的HTML DOM解析器没有更新

问题描述:

我对我自己的模板系统使用简单的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

我没有看到任何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