2010-02-21 26 views
19

He incorporado HTML Tidy en mi aplicación para limpiar el HTML entrante. Pero Tidy tiene una gran cantidad de errores y solucionarlos directamente en la fuente es mi peor pesadilla. El código fuente ordenado es ilegible abominación. Mil + funciones de línea, nomenclatura variable pobre, código de spaghetti, etc. Es realmente horrible.¿Existe una alternativa a HTML Tidy?

Peor aún, desarrollo oficial seems to have ceased. En los últimos 12 meses, ha habido tres transacciones de escritura en el repositorio CVS oficial. Pero ha estado muerto y enterrado por mucho más tiempo que eso ...

Así que estoy buscando una aplicación/biblioteca OSS C o C++ que pueda hacer lo que Tidy puede (cuando lo desee): corregir el marcado HTML incorrecto y transformarlo en XHTML válido (esta es la parte que me interesa). Y me refiero a todo tipo de marcas malas.

¿Hay algo así por ahí?

EDIT: Necesito tanto para las manipulaciones en el árbol DOM mediante una herramienta de manejo de XML y para el cumplimiento general de la especificación XHTML. Mi aplicación debe aceptar HTML de los usuarios (que a menudo es inválida en todo tipo de formas) y generar XHTML válido. Es necesario que sea capaz de manejar incluso HTML que normalmente no se mostraría en un navegador porque el usuario lo editó a mano y no lo revisó después.

Un reemplazo directo para el analizador de corrección de errores de Tidy ... que no es una mierda. No me importan los errores si la fuente es legible y puedo solucionar los problemas yo mismo, o si hay desarrolladores activos que proporcionan correcciones de errores de manera oportuna.

+0

No sé si esto te sirve, pero hay una biblioteca Java llamada TagSoup (http: //home.ccil.org/~ cowan/XML/tagsoup /) que aparentemente tiene un par de puertos C++, tal vez, excepto que uno no es gratis y no estoy seguro de que el otro se mantenga. Produce un flujo de eventos SAX, pero convertirlo en una salida XML debería ser simplemente una cuestión de conectar el tubo correcto a la boquilla. Nunca lo usé yo mismo, sin embargo. –

Respuesta

2

¿Podría decirnos para qué va a utilizar esta herramienta? Como en, ¿quieres arreglar páginas web estáticas, o quieres algún tipo de paso de filtrado antes de otras manipulaciones, para que alguna herramienta pueda manejar páginas web con errores?

Personalmente, escribo mi propia herramienta encima de BeautifulSoup o lxml de Python cada vez que necesito --- es como mucho una docena de secuencias de comandos de línea y hace mucho de lo que quiero.

+0

No puedo usar Python o sus bibliotecas. Esta es una GUI, aplicación de código nativo. Integrar el intérprete de Python no es una opción. – Lucas

+0

Bueno, para una aplicación de código nativo GUI, la integración técnica del intérprete de Python * es * una opción, pero tal vez no sea atractiva cuando se evalúan los pros y los contras. http://docs.python.org/extending/embedding.html –

+0

Luego miro los enlaces nativos para lxml --- puede hacer el análisis bastante bien, incluso para html horriblemente roto. – pavpanchekha

2

hay una nueva, agradable, adecuado HTML 5 que soporta ordenado, por lo que la alternativa a la vieja, fea Tidy habría Tidy (GitHub repository).

0

Por algo que realmente arregla el código, su mejor apuesta es HTML Tidy. Hay muchos linters, pero realmente no hay nada que repare los errores en HTML, aparte de Tidy.

A primera vista, modernas programadores de POO podría pensar que el código fuente es una abominación ilegible, pero en el mundo C, Tidy es una biblioteca bastante sofisticado que utiliza una gran cantidad de conceptos OO avanzados y ofrece una interfaz muy reflexiva que expone casi toda su funcionalidad en una API C pura.

Se perderá un desarrollador casual, pero una vez inmerso, el código es bastante bonito. De acuerdo, las convenciones de nomenclatura son una mala combinación, pero las relaciones públicas son bienvenidas.

Cuestiones relacionadas