Cómo arreglar las etiquetas html (que falta el Y etiquetas) con HTMLAgilityPack

c# dom html-agility-pack

Pregunta

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

Salida requerida: <div><h1> hello </h1></div> <div><p>hi </p></div>

Usando el paquete de agilidad HTML, ¿es posible solucionar este tipo de problemas similares con el cierre y la apertura de etiquetas?

Respuesta aceptada

La biblioteca no es lo suficientemente inteligente como para crear la p apertura donde la pones, pero es lo suficientemente inteligente como para crear el h1 falta. Y, en general, crea HTML válido siempre, pero no siempre el que usted esperaría.

Así que este código:

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

va a volcar esto:

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

Que no es lo que quieres, pero es válido HTML. También puedes agregar un pequeño truco como este:

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

que va a volcar esto:

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

Respuesta popular

Al hacer HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml) HTMLAgilityPack corregirá automáticamente las etiquetas, y luego podrá acceder a esas etiquetas utilizando: HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML



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é