Bonjour à tous,
je débute en vb.net et j'ai un problème d'outOfMemoryException que je n'arrive pas à résoudre.
Voilà, j'ai fait un petit programme pour traiter un fichier xml.
Dans un premier temps, il ouvre mon fichier xml (qui fait environ 50 Mo) dans une textbox invisible.
Je copie ensuite le texte dans une autre textbox visible cette fois-ci dans laquelle je vais faire mon traitement (ceci afin que le fichier d'origine ne soit pas modifié).
Je fais un premier traitement de remplacement de valeur d'une balise et je sauvegarde mes modifs dans un fichier temporaire; je vide ma textbox visible et je recopie le données de ce fichier temporaire dedans afin que l'utilisateur vérifie les modifs :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim element As Xml.XmlNodeList Dim noeud As Xml.XmlNode Dim TextXML As Xml.XmlDocument = New Xml.XmlDocument Dim a As Integer = 0 TextXML.LoadXml(TextBox2.Text) element = TextXML.DocumentElement.GetElementsByTagName("ThemeValueColumnType") For Each noeud In element element(a).InnerText = "1" a = a + 1 Next TextXML.Save("C:\Temp\tempxml.mwx") TextBox2.Clear() TextBox2.Text = My.Computer.FileSystem.ReadAllText("C:\Temp\tempxml.mwx") End Sub
puis je fais un find/replace automatique dans ces données modifiées. et c'est que ça plante, que je fasse le traitement directement dans le textbox ou dans un autre fichier temporaire :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Dim myText As String = File.ReadAllText("C:\Temp\tempxml.mwx") Dim myTextReplace As String = myText.Replace(ComboBox1.Text, ComboBox2.Text) File.WriteAllText("C:\Temp\tempxmlreplace.mwx", myTextReplace) 'pour réecrire le texte dans un autre fichier. TextBox2.Clear() TextBox2.Text = My.Computer.FileSystem.ReadAllText("C:\Temp\tempxmlreplace.mwx") 'TextBox2.Text = Replace(TextBox2.Text, ComboBox1.Text, ComboBox2.Text) End Sub
j'ai cherché toute la matinée sans réussir à résoudre le problème.
Quelqu'un pourrait-il m'aider svp ?
Merci d'avance pour vos réponses
Partager