Corrección del paquete de agilidad HTML
  • orden de la lista
  • .net c# html html-agility-pack

    Pregunta

    He estado tratando de usar el paquete de agilidad HTML para analizar HTML en XHTML válido para ingresar en un archivo XML más grande. Esto en su mayor parte funciona, sin embargo, las listas se formatean como:

    <ul>
        <li>item1
        <li>item2
        </li></li>
    </ul>
    

    Como opuesto a lo que yo esperaría:

    <ul>
        <li>item1</li>
        <li>item2</li>
    </ul>
    

    Desafortunadamente, este formato con etiquetas li anidadas no pasa la validación del esquema sobre el que no tengo control. Alguien sabe una forma sencilla de corregir esto, ya sea a través del paquete de agilidad de HTML o una alternativa. Preferiblemente en .NET.

    Respuesta aceptada

    Encontré una alternativa al paquete de agilidad llamado HTML Tidy http://tidy.sourceforge.net/ De hecho, utilicé el puerto .NET llamado Tidy.NET http://sourceforge.net/projects/tidynet/ esto parecía solucionar mi problema .


    Respuesta popular

    Encontré tu questio en otros sitios también. El HTML que está intentando analizar es:

    <UL>
    <LI>NVQ Level 3 in Fabrication and Welding Engineering
    <LI>Level 3 Certificate in Engineering
    <LI>Level&nbsp;2 Key Skill in Application of Number
    <LI>Level&nbsp;2 Key Skill in Communication
    <LI>Level&nbsp;2 Key Skill in Information Technology
    <LI>Level 2 Key Skill in Working with Others
    <LI>Level 2 Key Skill in Improving Own Learning &amp; Performance</LI></UL>
    

    Lo que observo es que el primer <li> es padre de los otros <li>'s . Una aproximación que tomaría es tomar el primer <li> y el texto (es un TextNode para HAP), guardar los otros <li> hijos y eliminar a los hijos, insertándolos (mientras se forman) después del nodo principal.
    Puede que tenga que tomar la forma recursiva en esto. Aquí hay un vistazo a mi solución para una clase de HTML Sanitizer: etiquetas de tiras de paquete de agilidad HTML NO EN la lista blanca




    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é