184 messaggi dal 22 giugno 2008
Utilizzando la classe HttpWebRequest faccio una richiesta ad una pagina web. La risposta è ovviamente una stringa che contiene l'html della pagina.
Sarei interessato ad ottenere il contenuto di tutti gli elementi <p> (ad esempio) contenuti all'interno della risposta (che ricordo essere solo una stringa).
Esiste un modo furbo per leggere questa stringa di risposta e magari ottenere in un sol colpo tutti i <p> (ed il loro contenuto) o mi devo fare un iterazione carattere per carattere??
42 messaggi dal 13 settembre 2007
Ciao potersti usare le regular expressions.
Per prima cosa importi il namespace corretto:
using System.Text.RegularExpressions;

Poi fai una cosa del genere:
string html = "<p>pluto</p><p>paperino</p>";//il contenuto della pagina da parsare
string regEx = @"<p>(?<CONTENT_VALUE>.*?)</p>";//la regular expression

MatchCollection contents = Regex.Matches(html, regEx, RegexOptions.Singleline | RegexOptions.IgnoreCase);
            foreach (Match content in contents)
                Console.WriteLine(content.Groups["CONTENT_VALUE"].Value);

Ti viene stampato "pluto" e "paperino".
Riassumendo: l'espressione regolare "<p>(?<CONTENT_VALUE>.*?)</p>" va a prendere tutto il testo contenuto tra i tag <p> e </p>. Per fare in modo che i tag stessi non siano compresi nella selezione, il contenuto viene inseriro in un GRUPPO con nome "CONTENT_VALUE".
Il codice
Regex.Matches(html, regEx, RegexOptions.Singleline | RegexOptions.IgnoreCase);
significa "Prendimi tutti i tag <p></p> e il loro contenuto ignorando le maiuscole e minuscole e considerando il testo come se fosse su una sola riga", quest'ultima opzione ti evita problemi in casi di ritorno a capo.
Una volta fatto ciò si cicla su tutti i match e per ognuno di questi si legge il contenuto del gruppo "CONTENT_VALUE".
Per varie info vai qui:
http://www.regular-expressions.info/

Fammi sapere se ti è stato utile.

Ciao
Modificato da roland79 il 11 gennaio 2012 08.41 -
184 messaggi dal 22 giugno 2008
Ottimo ed abbondante... preciso e funzionale... grazie mille!!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.