現在、私は Internet Explorer アドオンに取り組んでいます。これは、HTML ドキュメントをスキャンしてプレーン テキストの URL を探し、それらを「リンク化」することになっています。
私は Web サイトの DOM にアクセスでき、すべての DOM ノードをトラバースし、RegEx を使用して「リンク」を検索して、これらのテキストを HTML コードに置き換えることを考えていましたが、IHTMLElement オブジェクトの「InnerText」プロパティを変更する場合、そのすべての子ノードが失われ、Web サイトが深刻に混乱します。
ここにいくつかのコードがあります:
//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-method があります:
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);
}
}
これは機能しますが、子を持たないノードに対してのみです。
誰でもこの問題で私を助けてくれませんか、私はとても感謝しています!
よろしく
//ヘンリク