En ce moment je travaille sur un add-on Internet Explorer qui est censé scanner un document HTML pour les URL en texte brut, puis les "linkifier". J'ai accès aux sites DOM et j'ai eu l'idée de parcourir tous les nœuds DOM et de rechercher des "liens" en utilisant RegEx, pour remplacer ces textes par du code HTML, cependant, en changeant la propriété "InnerText" de l'objet IHTMLElement, tous ses nœuds enfants sont perdus, ce qui perturbe gravement le site Web.Comment remplacer un contenu de texte interne de balises HTML en utilisant C#!
Voici quelques code:
//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);
}
}
Et voici la fixElement méthode:
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);
}
}
Cela fonctionne, mais seulement pour les noeuds qui ne dispose pas d'enfants.
Quelqu'un peut-il s'il vous plaît aidez-moi avec ce problème, je serais très reconnaissant!
Cordialement
// Henrik
Ça sonne bien! Bien que j'ai regardé partout dans la documentation, je n'arrive pas à trouver comment injecter mes nœuds fils à l'élément! – nelshh