Come riparare i tag html (che manca il & tag) con HTMLAgilityPack

c# dom html-agility-pack

Domanda

Ho un html con <div><h1> hello Hi</div> <div>hi </p></div>

Output richiesto: <div><h1> hello </h1></div> <div><p>hi </p></div>

Utilizzando l'agility pack HTML è possibile risolvere questo tipo di problemi simili con i tag di chiusura e apertura mancanti?

Risposta accettata

La biblioteca non è abbastanza intelligente per creare l'apertura p dove lo metti, ma è abbastanza intelligente per creare i mancanti h1 . E in generale, crea sempre HTML valido, ma non sempre quello che ti aspetteresti.

Quindi questo codice:

        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

scaricherò questo:

<div><h1> hello Hi</h1></div> <div>hi <p></div>

Quale non è quello che vuoi, ma è un codice HTML valido. Puoi anche aggiungere un piccolo trucco come questo:

        HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed;
        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

questo scaricherà questo:

<div><h1> hello Hi</h1></div> <div>hi <p></p></div>

Risposta popolare

Quando HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml) HTMLAgilityPack correggerà automaticamente i tag per te, quindi potrai accedere a tali tag utilizzando: HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML



Related

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é