2009-04-01 7 views
2

Je suis à la recherche d'une bibliothèque .NET qui peut générer une arborescence XML propre, idéalement System.Xml.XmlDocument, à partir de code HTML non valide. C'EST À DIRE. Il devrait faire le genre de meilleur effort que les navigateurs font face aux suppositions, réparations et substitutions lorsqu'ils sont confrontés à cette situation, et générer un XmlDocument prétendu. La bibliothèque devrait également être bien entretenue. :)Bibliothèque pour générer .NET XmlDocument à partir de la balise de balise HTML

Je me rends compte que c'est beaucoup (trop?) À demander, et j'apprécierais toutes les pistes utiles. Il semble y avoir un bon nombre d'implémentations pour Java, mais je préfère ne pas générer mes propres liaisons. Jusqu'ici pour. NET j'ai trouvé http://www.majestic12.co.uk/projects/html_parser.php et http://users.rcn.com/creitzel/tidy.html#dotnet, et http://sourceforge.net/projects/tidyfornet.

Je n'ai pas encore construit ou testé l'un de ceux-ci, mais à partir des docs (rares) et des mises à jour rares, ils ne semblent pas avoir ce que je cherche. Quelles recommandations avez-vous, soit parmi ces choix, soit à partir de votre expérience passée?

Répondre

8

Le HTML Agility Pack est très bien noté. Il va certainement faire l'analyse/meilleure estimation etc.

Le modèle est intentionnellement similaire à XmlDocument, y compris SelectNodes etc pour l'interrogation.

Si vous avez besoin d'une sortie xhtml, il y a un drapeau OptionOutputAsXml; Je suppose que la mise à true et l'appel Save donne des résultats en xhtml.

+0

Merci! Jusqu'à présent, il semble très solide, bien que j'ai dû faire quelques ajustements pour le compiler et il n'y a pas de vrais docs. –

+0

J'ai terminé le code d'analyse, et je pense toujours que c'est une excellente bibliothèque. Merci pour le tuyau. Une chose un peu étrange est qu'il ne semble pas avoir d'option pour développer automatiquement les entités (par exemple). Vous devez appeler manuellement DeEntitize. Heureusement, j'avais seulement besoin de ça pour 1 noeud. –

Questions connexes