VB.net: aiuto e dubbi[RISOLTO]
Inviato: lunedì 15 giugno 2015, 13:02
Salve amici
allora ho una problematica che mi si verifica unatantum su dei file xml che non sono di mia appartenenza ma mi vengono ricevuti da grandi società.
Questi file mi servono per importare dati sul db tramite un eseguibile x windows che importa i dati nel db.
Solo che in questi file ogni tanto appaiono caratteri ascii ed il codice scritto dai miei colleghi di lavoro non intercetta questi caratteri.
Allora sto cercando di fare un eseguibile che ricompila i fogli xml e che li riscriva eliminando sti caratteri ascii ma sono ad un punto fermo e siccome x me il linguaggio è nuovo chiedo a voi una mano su come sistemare il codice
posto il codice
ho cercato di passare in un array tutti i caratteri ascii ma mi sa che sbaglio qualcosa.
Confido in voi per i suggerimenti da applicare a questo eseguibile e soprattutto scusate se c 'è qualcosa di sbagliato ma x me è un linguaggio nuovo
allora ho una problematica che mi si verifica unatantum su dei file xml che non sono di mia appartenenza ma mi vengono ricevuti da grandi società.
Questi file mi servono per importare dati sul db tramite un eseguibile x windows che importa i dati nel db.
Solo che in questi file ogni tanto appaiono caratteri ascii ed il codice scritto dai miei colleghi di lavoro non intercetta questi caratteri.
Allora sto cercando di fare un eseguibile che ricompila i fogli xml e che li riscriva eliminando sti caratteri ascii ma sono ad un punto fermo e siccome x me il linguaggio è nuovo chiedo a voi una mano su come sistemare il codice
posto il codice
Codice: Seleziona tutto
Imports System.Xml
Imports System.IO
Public Class Form1
Dim myFileDlog As New Windows.Forms.OpenFileDialog()
Dim filepath As String
Dim ascii(255) As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_1.Click
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = 5
ProgressBar1.Value = 0
'look for files in the c drive
myFileDlog.InitialDirectory = "c:\"
'specifies what type of data files to look for
myFileDlog.Filter = "All Files (*.*)|*.*" & _
"|File Xml (*.xml)|*.xml"
'specifies which data type is focused on start up
myFileDlog.FilterIndex = 2
'Gets or sets a value indicating whether the dialog box restores the current directory before closing.
myFileDlog.RestoreDirectory = True
'seperates message outputs for files found or not found
If myFileDlog.ShowDialog() = _
Windows.Forms.DialogResult.OK Then
If Dir(myFileDlog.FileName) <> "" Then
MsgBox("File Exists: " & _
myFileDlog.FileName, _
MsgBoxStyle.Information)
Else
MsgBox("File Not Found", _
MsgBoxStyle.Critical)
End If
End If
'Adds the file directory to the text box
TextBox1.Text = myFileDlog.FileName
'carichiamo la stringa nella textbox se il file è stato scelto'
TextBox2.Enabled = False
TextBox2.Text = " nessun file caricato "
If (TextBox1.Text <> "") Then
TextBox2.Text = " caricato il file di conversione"
End If
End Sub
Public Function LoadXMLDoc() As XmlDocument
Dim xdoc As XmlDocument
Dim lnum As Long
'Dim pos As Long'
'Dim Newxml As String'
Try
xdoc = New XmlDocument()
xdoc.Load(filepath)
Catch ex As XmlException
'MessageBox.Show(ex.Message)
lnum = ex.LineNumber
ReplaceSpecialChars(lnum)
xdoc = LoadXMLDoc()
End Try
Return (xdoc)
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
filepath = myFileDlog.FileName
Dim xmldoc As New XmlDocument()
Dim num As New Long()
xmldoc = LoadXMLDoc()
End Sub
Private Sub ReplaceSpecialChars(ByVal linenumber As Long)
Dim strm As StreamReader
Dim strline As String
Dim strreplace As String = " "
Dim tempfile As String = "C:\temp.xml"
Try
FileCopy(filepath, tempfile)
Catch ex As Exception
End Try
Dim strmwriter As New StreamWriter(filepath)
strmwriter.AutoFlush = True
strm = New StreamReader(tempfile)
Dim i As Long = 0
While i < linenumber - 1
strline = strm.ReadLine
strmwriter.WriteLine(strline)
i = i + 1
End While
Dim lineposition As Int32
Dim str_vuoto As String = " "
Dim carattere_strano As String
strline = strm.ReadLine
For k As Integer = 0 To ascii.Length
ascii(k) = Chr(k)
carattere_strano = ascii(k)
lineposition = InStr(strline, carattere_strano)
If lineposition > 0 Then
strreplace = str_vuoto
strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)
strmwriter.WriteLine(strline)
End If
Exit For
Next
'strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)'
'strmwriter.WriteLine(strline)'
'strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition - 1)'
'Exit For'
strline = strm.ReadToEnd
strmwriter.WriteLine(strline)
strm.Close()
strm = Nothing
strmwriter.Flush()
strmwriter.Close()
strmwriter = Nothing
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Close()
End Sub
End ClassConfido in voi per i suggerimenti da applicare a questo eseguibile e soprattutto scusate se c 'è qualcosa di sbagliato ma x me è un linguaggio nuovo