HTMLAgility Pack - OuterHtml Schreibgeschützt?

html-agility-pack

Frage

Hey, ich durchquere alle Links in meiner eigenen Codebasis und <a href="x"> sie aus <a href="x"> zu <asp:HyperLink> 's aus Lokalisierungsgründen. Ich benutze das HTMLAgilityPack für diese (und andere Dinge) und ich möchte nur das OuterHtml-Objekt für die Links ändern, die ich finde..aber es ist schreibgeschützt?

Ich bin neu in der HAP, muss ich einen neuen Knoten erstellen und den alten löschen? Ist jemand darauf gestoßen?

Vielen Dank!

Beliebte Antwort

Warum sollten Sie das HTML Agility Pack verwenden, wenn Sie das gesamte Dokument als String behandeln? Suchen Sie stattdessen nach Tags, ersetzen Sie diese und schreiben Sie das Dokument zurück.

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();

Und Ihr ConvertLink würde so aussehen:

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

(nicht kompiliert, muss also etwas optimiert werden).




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum