2011-05-09 9 views
6

Estoy tratando de reemplazar todas mis etiquetas h1 con etiquetas h2 y estoy usando el paquete HtmlAgility.Reemplazar etiquetas en HtmlAgility

lo hice:

var headers = doc.DocumentNode.SelectNodes("//h1"); 
if (headers != null) 
{ 
    foreach (HtmlNode item in headers) 
    { 
     //item.Replace?? 
    } 
} 

y me quedé atrapado allí. He intentado esto:

var headers = doc.DocumentNode.SelectNodes("//h1"); 
if (headers != null) 
{ 
    foreach (HtmlNode item in headers) 
    { 
     HtmlNode newNode = new HtmlNode(HtmlNodeType.Element, doc, item.StreamPosition); 
     newNode.InnerHtml = item.InnerHtml; 
     // newNode suppose to set to h2 
     item.ParentNode.ReplaceChild(newNode, item); 
    } 
} 

problema es que no tengo ni idea de cómo crear un nuevo h2, obtener todos los atributos, etc. Estoy seguro theres una manera simple de hacer eso, alguna idea?

Respuesta

9
var headers = doc.DocumentNode.SelectNodes("//h1"); 
     if (headers != null) 
     { 
      foreach (HtmlNode item in headers) 
      { 
       item.Name = "h2" 
      } 
     } 
+0

continuar mi aventura explorando HtmlAgilityPack .. ¿hay una manera de forzar a todos los atributos para ser envuelto entre comillas dobles? he encontrado 'OptionOutputOptimizeAttributeValues' pero eso solo elimina todas las comillas .. –

+0

No lo sé. Intenta preguntar en el foro oficial de HtmlAgilityPack. http://htmlagilitypack.codeplex.com/discussions – VikciaR

1

Un enfoque similar reemplazando las variables a través Descendientes lugar de SelectNodes:

IEnumerable<HtmlNode> tagDescendants = doc.DocumentNode.Descendants("h1"); 
foreach (HtmlNode htmlNode in tagDescendants) 
{ 
    htmlNode.Name = "h2"; 
} 
Cuestiones relacionadas