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