———————————————————–
Voici deux blocs de code VB.NET pour modifier un code XML :
– Un Code permettant de modifier la valeur d’un Nœud (node)
– Un Code permettant de modifier un XML en mode texte
Ces codes vont 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 ces Codes :
<?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>
Modifier la valeur d’un Nœud dans un fichier XML
Imports System.Xml
Imports System.IO
Public Class Form1
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
'Fichier Source
Dim resource As String = "C:\temp\MonXML.xml"
'Fichier de déstination
Dim resource2 As String = "C:\temp\MonXML-2.xml"
'Nouvelle Valeur de NatPce
Dim textNatPce As String = "10"
'Nouvelle Valeur de TypPce
Dim textTypPce As String = "11"
'Chargement du Fichier XML d'origine
Dim xDoc As New XmlDocument
xDoc.Load(resource)
Dim NatPce As XmlNodeList = xDoc.GetElementsByTagName("NatPce")
Dim TypPce As XmlNodeList = xDoc.GetElementsByTagName("TypPce")
'Recherche des Nodes NatPce et remplacement de la valeur initiale par 10
For Each node As XmlNode In NatPce
node.Attributes("V").Value = textdNatPce
Next node
'Recherche des Nodes TypPceet remplacement de la valeur initiale par 11
For Each node As XmlNode In TypPce
node.Attributes("V").Value = textTypPce
Next node
'Sauvegarde du nouveau XML
xDoc.Save(resource2)
End Sub
End Class
Modifier un fichier XML en mode texte
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