2011-06-30 19 views
9

La tarea es simple, pero no pude encontrar la respuesta.Html Agility Pack/C#: cómo crear/reemplazar etiquetas?

Eliminar etiquetas (nodos) es fácil con Node.Remove() ... Pero, ¿cómo reemplazarlas?

Hay un método ReplaceChild(), pero se requiere crear una nueva etiqueta. ¿Cómo configuro el contenido de una etiqueta? InnerHtml y OuterHtml son propiedades de solo lectura.

Respuesta

12

Ver este fragmento de código:

public string ReplaceTextBoxByLabel(string htmlContent) 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml(htmlContent); 

    foreach(HtmlNode tb in doc.DocumentNode.SelectNodes("//input[@type='text']")) 
    { 
    string value = tb.Attributes.Contains("value") ? tb.Attributes["value"].Value : " "; 
    HtmlNode lbl = doc.CreateElement("span"); 
    lbl.InnerHtml = value; 

    tb.ParentNode.ReplaceChild(lbl, tb); 
    } 

    return doc.DocumentNode.OuterHtml; 
} 
0

¿Estás seguro de que InnerHtml es una propiedad de solo lectura?

la documentación del paquete de HTMLAgility dice lo contrario: (Corte & Pegar)

Gets or Sets the HTML between the start and end tags of the object. 

Namespace: HtmlAgilityPack 
Assembly: HtmlAgilityPack (in HtmlAgilityPack.dll) Version: 1.4.0.0 (1.4.0.0) 
Syntax 
C# 
public virtual string InnerHtml { get; set; } 

Si se lee sólo podría publicar algo de código?