2010-07-15 5 views
1

Supposons que j'ai cetteHtmlAgilityPack créer nœud de texte

<div> 
    <p>Bla bla bla specialword bla bla bla</p> 
    <p>Bla bla bla bla bla specialword</p> 
</div> 

Je veux remplacer le mot specialword de mon html avec un nœud, par exemple <b>specialword</b>. C'est facile en utilisant le remplacement de chaîne, mais je veux utiliser les fonctionnalités Html Agility Pack.

Merci.

+0

Je ne pense pas HtmlAgilityPack a cette fonction. Vous pourriez juste devoir faire le remplacement de chaîne. –

+0

Je crée d'abord un document à partir de l'extrait HTML, puis je recherche les nœuds de texte dont le texte contient le mot nécessaire, puis remplace le mot par la nouvelle valeur. – Alex

Répondre

0

HtmlNode a une méthode appelée ReplaceChild, devrait faire l'affaire.
mis à jour après commentaire

HtmlAgilityPack n'a aucune raison d'avoir cette capacité car il est la manipulation de chaînes pur, si je vous comprends bien, et .NET fait que bien que-est:

HtmlNode div = doc.CreateElement("div"); 
div.InnerHtml = Regex.Replace("(.*?)specialword(.*?)","{1}<b>specialword</b>{2}"); 

Puis trouvez le noeud et remplacez-le par son parent.

+0

ReplaceChild avec quoi? – morsanu

0
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Net; 
using System.Web; 
using System.IO; 
using HtmlAgilityPack; 

namespace savepage 
{ 
class Program 
{ 

    static void Main(string[] args) 
    { 
     //... 
     // using (WebClient client = new WebClient()) // WebClient class inherits IDisposable 
     // { 
     string[] nametag = { "//img", "//div", "//p", "//li", "//pre", "//span", "//ul" }; 
     Console.WriteLine("Enter address site:"); 
     HtmlDocument doc = new HtmlWeb().Load(Console.ReadLine()); // get address site 
     // Console.WriteLine("Enter Tag:"); 

      // all <td> tags in the document 
     Console.WriteLine("0=img ,1=div,2=p,3=li,4=pre,5=span,6=ul"); 
     string name = nametag[int.Parse(Console.ReadLine()) ]; //get list array 
     Console.WriteLine(name); 
     // foreach (HtmlNode span in doc.DocumentNode.SelectNodes("//span")) 

     using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\WriteLines2.txt")) 
     { 

      foreach (HtmlNode tag in doc.DocumentNode.SelectNodes(name)) 
      { 
       // HtmlAttribute src = img.Attributes[@"src"]; 
       // Console.WriteLine(img.InnerText); 
       Console.WriteLine(tag.InnerText); 
       file.WriteLine(tag.InnerText); 
       //doc.Save(@"c:\majid.txt"); 
      } 
     } 

      Console.ReadKey(); 


     // } 
    } 
} 

}

Questions connexes