Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB .net] Get attribute
Forum - C# / VB.NET - [VB .net] Get attribute

Avatar
lyrsaw (Normal User)
Newbie


Messaggi: 1
Iscritto: 29/10/2011

Segnala al moderatore
Postato alle 10:52
Sabato, 29/10/2011
Salve a tutti.
Mi sto dannando da alcuni giorni per risolvere il seguente problema.
Sto creando un'applicazione con webbrowser integrato, dal quale estratto (comodamente) alcuni dati che vanno poi a riempire delle label presenti sul form.
Per fare questo uso "getelementbyID". Il problema si pone però quando devo estrarre elementi dalla pagina che non hanno un "id" ma hanno come "tag" <span class[...] >.
Come posso estratte i valori in esso contenuti? Incollo anche il codice Html in questione :
<span class="ptz">
<span class="ptz_value">42687</span> PTZ</span>

A me interessa estrarre il valore numerico contenuto (sempre variabile), che in questo caso è 42687.
Ho provato in tutti i modi, anche con "getelementbytagname" ma non ci sono riuscito.Spero di essere stato chiaro nel porre il quesito e vi ringrazio anticipatamente per eventuali risposte.

Antonio


PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
4
Down
V
Segnala al moderatore
Postato alle 12:26
Sabato, 29/10/2011
Non hai provato in tutti i modi, altrimenti ci saresti riuscito :D

Fra tutti i tag con nome "span", seleziona solo quelli con attributo di class uguale a "ptz_value":
Codice sorgente - presumibilmente C# / VB.NET

  1. var ptzValue =
  2.     from span in webBrowser.Document.GetElementsByTagName("span")
  3.     where span.GetAttribute("class") == "ptz_value"
  4.     select Convert.ToInt32(span.InnerText)



Bhè, sì... io intendevo " tutti i modi da me conosciuti" :). In ogni caso ora provo e ti faccio sapere. Grazie mille per la celere risposta :) - lyrsaw - 29/10/11 12:42
Ci ho provato ma ottengo questo nella console:1) 'ptz_Value' non dichiatato. Non è accessibile a causa del livello di protezione. 2) 'var' non dichiarato. non è accessibile a causa del livello di protezione. 3) Gli argomenti del metodo devono essere racchiusi fra parentesi. - lyrsaw - 29/10/11 12:48
Questo codice è C# !! - Il Totem - 29/10/11 13:05
LOL!! in VB .net come sarebbe?? - lyrsaw - 29/10/11 13:07
Invece di var si usa Dim. Al posto di from, in, where e select si usano From, In, Where e Select. Al posto di "==" ci va un singolo "=". A seconda della versione, il compilatore può supportare o meno il codice a capo (se non lo supporta, usa "_" prima degli a cacpo). - Il Totem - 29/10/11 13:10
Non va, mi restituisce questo:Avviso 1 Durante la conversione da 'System.Collections.Generic.IEnumerable(Of Integer)' a 'String' si potrebbero verificare errori di runtime. - lyrsaw - 29/10/11 13:16
Questo è un tuo errore, non mio. Dovresti sapere che le query linq restituiscono sempre delle istanze di IEnumerable. In questo caso, l'inferenza di tipo sulla funzione ToInt32 assume come tipo generics Integer. Se vuoi delle stringhe, togli la chiamata a ToInt32. Se vuoi un solo elemento, ... - Il Totem - 29/10/11 13:19
... richiama ptzValue.First() o ptzValue.FirstOrDefault() - Il Totem - 29/10/11 13:19
In questo modo mi restituisce la label vuota. - lyrsaw - 29/10/11 13:41
Non può restituirti una label, perché il risultato è IEnumerable<Int32> - Il Totem - 30/10/11 13:02
Non c'è modo di estrarre il valore numerico in una label o in una textbox? - lyrsaw - 30/10/11 22:51
Convert.ToInt32, ma cosa c'entra ora? - Il Totem - 31/10/11 11:13


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM