weldox ha scritto:
riddik ha scritto:
Mi dai il link per scaricarlo per piacere?
anche io devo affrontare il problema dell'errore causato dall'assenza di un nodo, se trovo qualcosa lo scrivo qui.
Ciao io importo in questo modo e se i nodi non esistono non mi da nessun errore funziona tutto correttamente ... almeno per le mie esigenze... sono in fase di test
'==============================================================================================================================
'APRO LA TABELLA PER RECUPERARE IL NOME FILE XML DA ELABORARE PER POTER AGGIORNARE I CAMPI CON I VALORI RECUPERATI DALL'XML STESSO
'==============================================================================================================================
Dim NomeFile, PercorsoCompleto As String
Dim RS1 As ADODB.Recordset ' Tabella (ELENCO_FILE)popolato precedentemente con tutti i nomi dei file xml e il rispettivo percorso
Set RS1 = New ADODB.Recordset
RS1.Open "ELENCO_FILE_NUOVI_DA_AGGIUNGERE", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until RS1.EOF
NomeFile = (RS1!NOME_FILE) 'Prelevo dalla tabella il nome del file da elaborare
PercorsoCompleto = (RS1!PERCORSO) 'Prelevo dalla tabella il percorso del file da elaborare
PercorsoCompleto = PercorsoCompleto & NomeFile 'Compongo il percorso completo
'==========================================================================================
'INIZIO LETTURA FILE XML
'==========================================================================================
Dim Obj As DOMDocument
Dim Verifica As Boolean
Dim Nodo, Nodo2, Nodo3, Nodo4, Nodo5, Nodo6, Nodo7, Nodo8 As IXMLDOMNodeList
Dim Nome As IXMLDOMNode
Dim Testo1, Testo2, Testo3, Testo4, Testo5, Testo6, Testo7, Testo8 As String
Testo1 = ""
Testo2 = ""
Testo3 = ""
Testo4 = ""
Testo5 = ""
Testo6 = ""
Testo7 = ""
Testo8 = ""
'==========================================================================================
'ACCESSO AL FILE XML
'==========================================================================================
Set Obj = New DOMDocument
Obj.async = False
Obj.Load (PercorsoCompleto)
'==========================================================================================
'NODO RAGIONE SOCIALE
'==========================================================================================
'seleziono il nodo da leggere
Set Nodo = Obj.DocumentElement.SelectNodes("//CedentePrestatore//Denominazione")
'leggo tutti i dati del nodo
For Each Nome In Nodo
'estraggo il valore del nodo
Testo1 = Testo1 & " " & Nome.Text
Next
'==========================================================================================
'NODO NUMERO FATTURA
'==========================================================================================
Set Nodo2 = Obj.DocumentElement.SelectNodes("//DatiGenerali//Numero")
'leggo tutti i dati del nodo
For Each Nome In Nodo2
'estraggo il valore del nodo
Testo2 = Testo2 & " " & Nome.Text
Next
'==========================================================================================
'NODO DATA FATTURA
'==========================================================================================
Set Nodo3 = Obj.DocumentElement.SelectNodes("//DatiGenerali//Data")
'leggo tutti i dati del nodo
For Each Nome In Nodo3
'estraggo il valore del nodo
Testo3 = Testo3 & " " & Nome.Text
Next
'==========================================================================================
'NODO DATA CODICE DESTINATARIO
'==========================================================================================
Set Nodo4 = Obj.DocumentElement.SelectNodes("//DatiTrasmissione//CodiceDestinatario")
'leggo tutti i dati del nodo
For Each Nome In Nodo4
'estraggo il valore del nodo
Testo4 = Testo4 & " " & Nome.Text
Next
'==========================================================================================
'NODO DATA MAIL PEC
'==========================================================================================
Set Nodo5 = Obj.DocumentElement.SelectNodes("//DatiTrasmissione//PECDestinatario")
'leggo tutti i dati del nodo
For Each Nome In Nodo5
'estraggo il valore del nodo
Testo5 = Testo5 & " " & Nome.Text
Next
'==========================================================================================
'NODO PAGAMENTO
'==========================================================================================
Set Nodo6 = Obj.DocumentElement.SelectNodes("//DatiPagamento//ModalitaPagamento")
'leggo tutti i dati del nodo
For Each Nome In Nodo6
'estraggo il valore del nodo
Testo6 = Testo6 & " " & Nome.Text
Next
'==========================================================================================
'NODO ESTENSIONE ALLEGATO
'==========================================================================================
Set Nodo7 = Obj.DocumentElement.SelectNodes("//Allegati//FormatoAttachment")
'leggo tutti i dati del nodo
For Each Nome In Nodo7
'estraggo il valore del nodo
Testo7 = Testo7 & " " & Nome.Text
Next
'==========================================================================================
'NODO NOME ALLEGATO
'==========================================================================================
Set Nodo8 = Obj.DocumentElement.SelectNodes("//Allegati//NomeAttachment")
'leggo tutti i dati del nodo
For Each Nome In Nodo8
'estraggo il valore del nodo
Testo8 = Testo8 & " " & Nome.Text
Next
'==========================================================================================
'CHIUDO IL FILE
'==========================================================================================
Set Obj = Nothing
'==========================================================================================
'AGGIORNO I CAMPI CON I DATI RECUPERATI
'==========================================================================================
With RS1
.Fields("RAG_SOC") = Trim(Testo1)
.Fields("NUMERO") = Trim(Testo2)
.Fields("DATA") = Left(Trim(Testo3), 10)
.Fields("CODICE_DESTINATARIO") = Trim(Testo4)
.Fields("MAIL_PEC") = Trim(Testo5)
.Fields("PAGAMENTO") = Left(Trim(Testo6), 4)
.Fields("ESTENSIONE_ALLEGATO") = Trim(Testo7)
.Fields("NOME_ALLEGATO") = Trim(Testo8)
.Update
End With
'==========================================================================================
'LOOP TABELLA PER AGGIORNAMENTO CAMPI
RS1.MoveNext
Loop
'==========================================================================================
MsgBox "CAMPI AGGIORNATI"
Non sono un esperto ma a me funziona (ho provato solo con i nodi che vedete)...p.s. io prima ho creato una tabella dove vado ad elaborare solo i file aggiunti e non tutti ogni volta