現在我正在處理一個Internet Explorer添加項,該添加項應該以純文本格式掃描HTML文檔的URL,然後「鏈接」它們。如何用C#替換HTML標籤內部的文本內容!
我有權訪問網站的DOM,並有一個想法來遍歷所有的DOM節點,並使用RegEx搜索「鏈接」,用HTML代碼替換這些文本,但是當更改「InnerText」屬性時IHTMLElement對象的所有子節點都會丟失,嚴重影響網站。
下面是一些代碼:
//This method is called when IE has finished loading a page
void _webBrowser2Events_DocumentComplete(object pDisp, ref object URL)
{
if (pDisp == _webBrowser2)
{
HTMLDocument pageContent = _webBrowser2.Document;
IHTMLElement bodyHtmlElmnt = pageContent.body;
fixElement(bodyHtmlElmnt);
}
}
而這裏的fixElement法:
void fixElement(IHTMLElement node)
{
if (node.innerText!=null && ((IHTMLElementCollection)node.children).length==0)
{
node.innerText= node.innerText.Replace("testString", "replaceWithThis");
}
foreach (IHTMLElement child in (node.children as mshtml.IHTMLElementCollection))
{
fixElement(child);
}
}
這個工作,但只適用於沒有任何孩子節點。
任何人都可以請幫我解決這個問題,我會非常感激!
問候
//亨裏克
聽起來不錯!儘管我已經在文檔中查找遍地,但我似乎無法找到如何將我的子節點注入到元素中! – nelshh 2010-09-26 19:21:15