HtmlAgilityPack produce etiquetas de cierre faltantes en OuterHtml

c# html html-agility-pack

Pregunta

Estoy usando HtmlAgilityPack para analizar y manipular el texto html. Sin embargo, parece que el DocumentNode.OuterHtml da etiquetas de cierre faltantes.

Para aislar el problema ahora no estoy haciendo nada más, simplemente analizar y obtener el OuterHtml (sin manipulación):

var document = new HtmlDocument();
document.LoadHtml(myHtml);
result = document.DocumentNode.OuterHtml;

Original: (myHtml)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>
     MyTitle
</title>

OutputHtml: (resultado) Observe que el elemento meta no está cerrado

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge"><title>
    MyTitle
</title>

De manera similar, todos los elementos de entrada y de imagen están abiertos. (Por favor, no responda que no debería ser un problema. Bueno, no debería serlo, pero lo es.) Chrome no puede representar la página correctamente. Sigue leyendo.

Lo que es más raro:

Original: (myHtml)

    <option value="10">Afrikaans</option>
    <option value="11">Albanian</option>
    <option value="12">Arabic</option>
    <option value="13">Armenian</option>
    <option value="14">Azerbaijani</option>
    <option value="15">Basque</option>

OutputHtml: (resultado) Observe que faltan etiquetas de cierre explícitas completas

    <option value="10">Afrikaans
    <option value="11">Albanian
    <option value="12">Arabic
    <option value="13">Armenian

Usando el último paquete NuGet de HtmlAgilitPack: id = "HtmlAgilityPack" version = "1.4.9"

Respuesta aceptada

Hay varias opciones que puede configurar cuando está cargando el documento.

OptionAutoCloseOnEnd

Define si el cierre para los nodos no cerrados debe realizarse al final o directamente en el documento. Establecer esto en verdadero puede cambiar la manera en que los navegadores renderizan la página.

document = new HtmlDocument();
document.OptionAutoCloseOnEnd = true;
document.LoadHtml(content);

Fuentes relacionadas que vale la pena leer:

HtmlAgilityPack Gotas Opciones de finalización de etiquetas

La etiqueta de imagen no se cierra con HTMLAgilityPack



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é