Modifier un XML en mode texte avec StreamReader

Ce code va chercher les valeur V= »xx » des nœuds TypPce et NatPce pour les remplacer par les valeur TypPCE V= »10″ et NatPce V= »11″

Source XML modifiée par ce Code :

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<DepenseAller>
<Bordereau>
<Piece>
<BlocPiece>
<InfoPce>
   <IdPce V="1006"></IdPce>
   <TypPce V="01"></TypPce>
   <NatPce V="09"></NatPce>
   <Obj V="CP.CHATEAU"></Obj>
</InfoPce>
</BlocPiece>
</Piece>
</Bordereau>
</DepenseAller>

Code pour Modifier le fichier XML en mode texte avec StreamReader

Imports System.IO
 
Public Class Form1
  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim resource As String = "C:\temp\64300.xml"
        Dim resource2 As String = "C:\temp\64300-2.xml"
'je vérifie si le fichier existe 
        If System.IO.File.Exists(resource) Then
            Try
                Dim fileReader As System.IO.StreamReader
 
'je lis le fichier en lecture encodage UTF7
                fileReader = My.Computer.FileSystem.OpenTextFileReader(resource, System.Text.Encoding.UTF7)
 
                Dim i As Integer = -1
                Dim i2 As Integer = 0
                Dim stringReader As String
'Je lis le fichier en écriture avec un encodage qui lui plait bien (lol j'ai eu du mal a le trouver cet encodage) 
                Dim lines As List(Of String) = File.ReadLines(resource, System.Text.Encoding.GetEncoding(0)).ToList()
'je fait une lecture ligne par ligne 
                Do Until fileReader.EndOfStream
 
'je génère un numéro de ligne 
                    i = i + 1
                    stringReader = fileReader.ReadLine()
 
'si la ligne contient le node recherché je la remplace par la valeur qui va bien 
                    If stringReader.Contains("NatPce") Then
                        i2 = i
                        MsgBox("trouvé : " & lines(i) & "ligne = " & i2)
'quand même une petite vérif que la ligne que je modifie et la bonne 
                        Dim ligne As String = lines(i)
                        If ligne.Contains("NatPce") Then
'je remplace la ligne par son numéro de ligne avec ma valeur 
                            lines(i2) = "   <NatPce V=""11""></NatPce>"
                       Else
                            MsgBox("Erreur la ligne n'est pas la bonne")
                        End If
                    ElseIf stringReader.Contains("TypPce") Then
                        i2 = i
                        Dim ligne As String = lines(i)
                        If ligne.Contains("TypPce") Then
                            lines(i2) = "   <TypPce V=""11""></TypPce>"
                        Else
                            MsgBox("Erreur la ligne n'est pas la bonne")
                        End If
                    End If
                Loop 'Until stringReader Is Nothing
'j'écris mon nouveau fichier 
                File.WriteAllLines(resource2, lines, System.Text.Encoding.GetEncoding(0))
'je ferme la lecture 
                fileReader.Close()
            Catch ex As Exception
                MsgBox("ERREUR DANS LA LECTURE DU FICHIER !!!!")
            End Try
        Else
            MsgBox("ERREUR LE FICHIER N’EXISTE PAS !!!!")
        End If
    End   Sub
End Class