HTMLAgility Pack - ¿OuterHtml de solo lectura?

html-agility-pack

Pregunta

Hola, estoy atravesando todos los enlaces en mi propia base de código y cambiándolos de <a href="x"> a <asp:HyperLink> por razones de localización. Estoy usando el HTMLAgilityPack para esto (y otras cosas) y me gustaría cambiar el objeto OuterHtml para los enlaces que encuentro ... ¿pero es de solo lectura?

Soy nuevo en el HAP, ¿necesito crear un nuevo nodo y eliminar el anterior? ¿Alguien se ha topado con esto?

¡Gracias!

Respuesta popular

¿Por qué usar el paquete de agilidad HTML si está tratando todo el documento como una cadena? En su lugar, busque las etiquetas y reemplácelas, luego vuelva a escribir el documento.

var doc = new HtmlDocument();
doc.LoadHtml(yourString); // or doc.Load(yourStream);

var links = doc.DocumentNode.Descendants("a");
foreach (var link in links)
{
    link.Parent.Replace(ConvertLink(link), link);
}
string newDocument = doc.DocumentNode.OuterHtml; // Or doc.Save();

Y tu ConvertLink se vería así:

public HtmlNode ConvertLink(HtmlNode aTag)
{
    var link = HtmlNode.Create("asp:HyperLink");
    link.Attributes.Add(...);
    return link;
}

(No compilado, por lo que podría necesitar algunos ajustes).



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué