2010-04-27 18 views
2

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.

Répondre

1

Essayez TidyManaged.

+0

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. –

+0

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. –

+0

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 –