InnerText = InnerHtml - Comment extraire un texte lisible avec HtmlAgilityPack

html html-agility-pack innerhtml innertext vb.net

Question

J'ai besoin d'extraire du texte d'un très mauvais HTML.

Je suis en train de le faire en utilisant vb.net et HtmlAgilityPack

La balise que je dois analyser a InnerText = InnerHtml et les deux:

Name:<!--b>&#61;</b--> Albert E<!--span-->instein  s<!--i>&#89;</i-->ection: 3 room: -

Pendant le débogage, je peux le lire en utilisant "visionneuse HTML":

Name: Albert Einstein section: 3 room: -

Comment puis-je obtenir cela dans une variable de chaîne?

MODIFIER:

J'utilise ce code pour obtenir le noeud:

Dim ElePs As HtmlNodeCollection = _
    mWPage.DocumentNode.SelectNodes("//div[@id='div_main']//p")
For Each EleP As HtmlNode In ElePs
    'Here I need to get EleP.InnerText "normalized"
Next

Réponse acceptée

Si vous remarquez que ce gâchis n'est en réalité que des commentaires HTML et qu'ils doivent être ignorés, il est donc suffisant de récupérer le texte et d'utiliser string.Join :

C #

var text = string.Join("",htmlDoc.DocumentNode.SelectNodes("//text()[normalize-space()]").
                                            Select(t=>t.InnerText));

VB.net

 Dim text = String.Join("", From t In htmlDoc.DocumentNode.SelectNodes("//text()[normalize-space()]")
                                   Select t.InnerText)

le html est valide, rien de grave, c'est écrit par quelqu'un qui n'a pas d'âme.

sur la base de votre mise à jour, cela doit:

Dim ElePs As HtmlNodeCollection = mWPage.DocumentNode.SelectNodes("//div[@id='div_main']//p")
For Each EleP As HtmlNode In ElePs
    'Here I need to get EleP.InnerText "normalized"
     Dim text = String.Join("", From t In EleP.SelectNodes(".//text()[normalize-space()]")
                Select t.InnerText).Trim()
Next

notez le .// cela signifie qu'il recherchera les nœuds descendants du nœud actuel contrairement à // qui démarrera toujours à partir du nœud supérieur.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi