简单的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后更新 - 任何想法,如果有可能
答
我没有看到任何createElement
样方法the API reference,这意味着无论是文档不完整或者您使用的是错误的工作工具。
我建议使用DOMDocument和DOMDocument::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
因为你的'a.aNavi'不在DOM中。它只是单独对象(或实例)的一些元素。 – YuS
但它的来源..我怎么能解决它? – Fuxi
'$ dom'究竟是什么?它看起来不是[DOMDocument](http://us2.php.net/manual/en/class.domdocument.php),因为该类没有'find()'方法或'outertext'属性。 – FtDRbwLXw6