Alka, optime datemi una mano almeno a capire come muovermi...
Dunque, fin prima io agivo su un file html che aveva il seguente formato:
Qui con VB6 col seguente codice facevo il parsing:codice:<th><div class="numeroEstrazione">001 - 22/07</div></th> <td><div class="numeroEstratto">2</div></td> <td><div class="numeroEstratto">7</div></td> <td><div class="numeroEstratto">10</div></td> <td><div class="numeroEstratto">11</div></td> <td><div class="numeroEstratto">21</div></td> <td><div class="numeroEstratto">23</div></td> <td><div class="numeroEstratto">24</div></td> <td><div class="numeroEstratto">25</div></td> <td><div class="numeroEstratto">28</div></td> <td><div class="numeroEstratto">43</div></td> <td><div class="numeroEstratto">47</div></td> <td><div class="numeroEstratto">49</div></td> <td><div class="numeroEstratto">53</div></td> <td><div class="numeroEstratto">59</div></td> <td><div class="numeroEstratto">61</div></td> <td><div class="numeroEstratto">65</div></td> <td><div class="numeroEstratto">72</div></td> <td><div class="numeroEstratto">77</div></td> <td><div class="numeroEstratto">81</div></td> <td><div class="numeroEstratto">89</div></td> <td><div class="numeroSpeciale">72</div></td>
codice:Private Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno As Integer) Dim nRiga As Long 'faccio il cicla sulle righe lette Dim nTrovate As Long ' faccio il conteggio di tutte le estrazioni trovate Dim nNumTrovati As Integer ' faccio il conteggio di tutti i num trovati ReDim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO ReDim aRighe(0) As String ' ora con questa funzione preparo l'array che conterà tutte le righe del file Call LeggiFileTornaRighe(sFile, aRighe) ' richiamo la funzione che effettua la lettura del file For nRiga = 0 To UBound(aRighe) If InStr(aRighe(nRiga), "numeroEstrazione") Then 'contiene la data, ed è quella che dice che abbiamo trovato una nuova estrazione nTrovate = nTrovate + 1 ' adesso faccio l'incremento delle estrazioni che ho trovato ReDim Preserve aRetEstr(nTrovate) As STRUCT_ESTRAZIONE_10LOTTO ' ora ridimensiono l'array preservando i valori precedenti Call LeggiDataEId(aRetEstr(nTrovate), aRighe(nRiga), nAnno) ' richiamo alla funzione di "supporto" denominata "LeggiDataEId" nNumTrovati = 0 End If If InStr(aRighe(nRiga), "numeroEstratto") Then ' è la riga che contiene uno dei numeri estratti nNumTrovati = nNumTrovati + 1 'variabile per conteggiare le righe lette Call LeggiNumeroEstratto(aRetEstr(nTrovate), aRighe(nRiga), nNumTrovati) ' richiamo alla funzione di "supporto" denominata "LeggiNumeroEstratto" End If If InStr(aRighe(nRiga), "numeroSpeciale") Then ' è la riga che contiene il numero oro estratto Call LeggiNumeroOro(aRetEstr(nTrovate), aRighe(nRiga)) ' richiamo alla funzione di "supporto" denominata "LeggiNumeroOro" per valorizzarlo End If Next DoEvents 'Kill sFile End Sub 'Con la procedura "LeggiDataEId" passo l'elemento dell'array e la stringa letta con i valori data e N° Estr e mi valorizza i membri dell' array che contiene l'estrazione da valorizzare Private Function LeggiDataEId(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String, nAnno As Integer) Dim i As Integer Dim sTemp As String ReDim av(0) As String 'sRiga = Replace(sRiga, "<br>", "-") av() = Split(sRiga, "<") i = InStr(av(1), ">") sTemp = Left(av(1), i - 1) ReDim av(0) As String av() = Split(sTemp, "-") structEstr.strctData.nNumEstrazione = Val(av(0)) ReDim avv(0) As String avv() = Split(av(1), "/") structEstr.strctData.AA = nAnno structEstr.strctData.Mm = Val(Trim$(avv(1))) structEstr.strctData.GG = Val(Trim$(avv(0))) ' Debug.Print Val(av(0)) ' Debug.Print nAnno ' Debug.Print Val(Trim$(avv(1))) ' Debug.Print Val(Trim$(avv(0))) End Function ' Con la procedura "LeggiNumeroEstratto" passo l'elemento dell'array aRetEstr che ha bisogno anch'esso di essere valorizzato Private Sub LeggiNumeroEstratto(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String, nIdNumeroDaValorizzare As Integer) Dim i As Integer Dim sTemp As String ReDim av(0) As String av() = Split(sRiga, ">") i = InStr(av(1), "<") sTemp = Left(av(1), i - 1) structEstr.aNum(nIdNumeroDaValorizzare) = Val(sTemp) End Sub ' Con la procedura "LeggiNumeroOro" passo l'elemento dell'array aRetEstr che ha bisogno anch'esso di essere valorizzato Private Sub LeggiNumeroOro(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String) Dim o As Integer Dim sTemp1 As String ReDim av(0) As String av() = Split(sRiga, ">") o = InStr(av(4), "<") sTemp1 = Left(av(4), o - 1) structEstr.nNumOro = Val(sTemp1) 'Val(sTemp1) contiene i numeri oro trovati End Sub
Ma ora con il file json da voi indicato come posso muovermi per il parsing in modo da avere sempre le mie variabili alimentate?
E' possibile per voi darmi delle "dritte" ?
Vi ringrazio![]()

Rispondi quotando
