Biagio De Franco ha scritto:
Attenzione!! ai caratteri speciali. Ho notato che già la semplice apertura nel Browser del file Xml se contiene caratteri speciali da errore.
Per cui visto che spesso le anagrafiche si importano e quindi con ogni tipo di carattere (soprattutto anagrafiche estere), per tagliare la testa al toro io ho sviluppato una funzione che ripulisce.
E' in Visual Basic....se a qualcuno può servire.....
Function ChTesto_AE(TestoCercato)
Dim TmpTesto, CAR As String, I As Integer
TmpTesto = TestoCercato
For I = 1 To Len(TmpTesto)
CAR = Mid(TmpTesto, I, 1)
If Asc(CAR) > 41 And Asc(CAR) < 58 Then GoTo PROSSIMO
If Asc(CAR) > 64 And Asc(CAR) < 91 Then GoTo PROSSIMO
If Asc(CAR) > 96 And Asc(CAR) < 123 Then GoTo PROSSIMO
Mid(TmpTesto, I, 1) = " "
PROSSIMO:
Next I
ChTesto_AE = TmpTesto
End Function
Sarebbe meglio invece di eliminare i caratteri di sistemarli (altrimenti avremmo dei dati incompleti) ad es. una sub in vb potrebbe essere:
Function StringXml(psStringa As String)
Dim lsStringa As String
Dim lic As Integer
Dim lsStrFin As String
lsStringa = replace(psStringa, "&#", "ççççç")
lsStringa = replace(lsStringa, "&", "&")
lsStringa = replace(lsStringa, "<", "<")
lsStringa = replace(lsStringa, ">", ">")
lsStringa = replace(lsStringa, Chr$(34), """)
lsStringa = replace(lsStringa, "'", "'")
lsStringa = replace(lsStringa, "ççççç", "&#")
lsStrFin = kEmptyString
For lic = 1 To Len(lsStringa)
If Asc(Mid$(lsStringa, lic, 1)) > 126 Then
lsStrFin = lsStrFin & "&#" & Trim(Str(Asc(Mid$(lsStringa, lic, 1)))) & ";"
Else
lsStrFin = lsStrFin & Mid$(lsStringa, lic, 1)
End If
Next
StringXml = lsStrFin
End Function