Comment analysez-vous un HTML dans vb.net
-
21-08-2019 - |
Question
Je voudrais savoir s'il existe un moyen simple pour analyser HTML dans vb.net. Je sais que HTML n'est pas sctrict sous-ensemble de XML, mais ce serait bien si elle pouvait être traitée de cette façon. Y at-il là-bas qui me permettrait parser HTML de façon XML comme dans VB.net?
La solution
J'aime Html Pack Agilité - il est développeur très sympathique, gratuit et code source est disponible.
Autres conseils
'ajouter prog ref aussi: Microsoft.mshtml
'puis sur la page:
Imports mshtml
Function parseMyHtml(ByVal htmlToParse$) As String
Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass()
htmlDocument.write(htmlToParse)
htmlDocument.close()
Dim allElements As IHTMLElementCollection = htmlDocument.body.all
Dim allInputs As IHTMLElementCollection = allElements.tags("a")
Dim element As IHTMLElement
For Each element In allInputs
element.title = element.innerText
Next
Return htmlDocument.body.innerHTML
End Function
Si votre code HTML conforme aux normes XHTML, vous pouvez faire beaucoup de l'analyse et de traitement en utilisant les classes d'espace de noms System.Xml.
Si, d'autre part, si ce que vous êtes analyse est ce que les développeurs web appellent « soupe tag », vous aurez besoin d'un analyseur tiers comme HTML Agility pack .
Cela peut être qu'une solution partielle à votre problème si vous essayez de comprendre comment un navigateur interprétera votre code HTML que chaque navigateur parse légèrement différente soupe tag.
Ne pas utiliser pack agilité, il suffit d'utiliser mshtml bibliothèque pour accéder au dom, c'est-à-dire ce que les utilisations et est idéal pour passer par les éléments HTML.
Pack Agility est méchant et sans nécessité hackie si vous me demandez, mshtml est le chemin à parcourir. Regardez-le sur msdn.
Est-il bien formé? Si le code HTML est en fait bien formé alors il peut être analysé comme XML. Si elle est la soupe tag et il y a des éléments et non fermés comme je pense que vous auriez à chasser autour d'une solution tierce.