Problème d'outOfMemoryException dans le traitement d'un xml
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:
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:
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