HTMLAgility Pack - OuterHtml di sola lettura?

html-agility-pack

Domanda

Ehilà, sto attraversando tutti i link nella mia base di codice, e cambiandoli da <a href="x"> a <asp:HyperLink> per ragioni di localizzazione. Sto usando l'HTMLAgilityPack per questo (e altre cose) e mi piacerebbe solo cambiare l'oggetto OuterHtml per i link che trovo..ma è di sola lettura?

Sono nuovo di HAP, devo creare un nuovo nodo ed eliminare quello vecchio? qualcuno si è mai imbattuto in questo?

Grazie!

Risposta popolare

Perché utilizzare l'HTML Agility Pack se si considera l'intero documento come una stringa. Cerca invece i tag e sostituiscili, quindi scrivi di nuovo il 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();

E il tuo ConvertLink sarà simile a questo:

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

(non compilato, quindi potrebbe essere necessario qualche ritocco).




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché