InnerText = InnerHtml - Come estrarre testo leggibile con HtmlAgilityPack

html html-agility-pack innerhtml innertext vb.net

Domanda

Ho bisogno di estrarre il testo da un Html pessimo.

Sto cercando di farlo usando vb.net e HtmlAgilityPack

Il tag che ho bisogno di analizzare ha InnerText = InnerHtml ed entrambi:

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

Durante il debug posso leggerlo usando "Html viewer": mostra:

Name: Albert Einstein section: 3 room: -

Come posso ottenere questo in una variabile stringa?

MODIFICARE:

Io uso questo codice per ottenere il nodo:

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

Risposta accettata

Se noti che questo pasticcio è in realtà solo un commento HTML e devono essere ignorati, quindi è sufficiente prendere il testo e usare la string.Join è sufficiente:

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)

l'html è valido, niente di male, è scritto da qualcuno senza un'anima.

in base all'aggiornamento, ciò deve essere fatto:

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

si noti che .// significa che cercherà i nodi discendenti del nodo corrente diversamente da // che partirà sempre dal nodo superiore.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow