Existe-t-il un nettoyeur HTML pour .NET capable d'analyser HTML et de le convertir (par exemple) en un format plus convivial, tel que XHTML?Bibliothèque gérée (.NET) avec fonctionnalité HTML Tidy-like?
J'ai essayé le HTML Agility Pack, mais cela échoue à analyser correctement les exemples fairlysimple.
Pour donner un exemple de HTML qui doit être analysée correctement:
<html><title>test</title>
<body>
<ul><li>TestElem1
<li>TestElem2
<li>TestElem3 List:
<ul><li>Nested1
<li>Nested2</li>
<li>Nested3
</ul>
<li>TestElem4
</ul>
<p>paragraph 1
<p>paragraph 2
<p>paragraph 3
</body></html>
li
balises ne doivent pas nécessairement être fermé (see specification) et neither do P
tags. En d'autres termes, l'exemple ci-dessus doit être analysé comme:
<html><title>test</title>
<body>
<ul><li>TestElem1</li>
<li>TestElem2</li>
<li>TestElem3 List:
<ul><li>Nested1</li>
<li>Nested2</li>
<li>Nested3</li>
</ul></li>
<li>TestElem4</li>
</ul>
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
</body></html>
Étant donné que le but est d'utiliser la bibliothèque sur diverses machines, il est un grand inconvénient de devoir revenir à code natif (comme une enveloppe autour HTML Tidy) qui nécessiterait des tracas de déploiement supplémentaires et sacrifierait l'indépendance de la plate-forme, sans parler d'être impossible dans les scénarios en sandbox.
Des suggestions? Pour résumer, je suis à la recherche:
- Un nettoyant HTML ala HTML Tidy
- Doit être capable de traiter avec de vrais HTML monde, pas seulement XHTML, à tout le moins à lire correctement valide HTML 4
- Doit pouvoir convertir en un format XML plus facile à traiter
- Devrait être une application purement gérée.
Je ne l'ai pas vu TidyManaged, si jamais je besoin de quelque chose de nouveau similaire, je vais prendre un coup d'oeil. Cependant, votre timing est étrange, comme j'ai * fait * écrire un patch pour ajouter le support pour les balises de fin optionnelles au pack d'agilité HTML il y a seulement deux semaines: http://htmlagilitypack.codeplex.com/workitem/29218 - J'espère qu'ils Je vais l'intégrer et ça va être ça. –
Il semble que TidyManaged soit un wrapper plutôt qu'un port; C'est un peu difficile car cela ne fonctionnera pas dans des choses comme Silverlight, et cela nécessite que vous connaissiez la plate-forme sur laquelle vous allez vous lancer au moment de la compilation. Pourtant, pour de nombreuses utilisations, ces restrictions ne sont pas un problème. –
J'ai listé quelques autres implémentations de HTML TidyLib pour .Net sur mon blog http://geekswithblogs.net/mnf/archive/2011/06/08/implementations-of-html-tidylib-for-.net.aspx –