Meilleur auteur de réponses
Modification d'un fichier XML

Question
-
Bonjour,
Je travaille en VB.NET et je cherche à modifier un fichier XML dont la structure est aussi simple que cela:
<RessouresScanVb>
<nbrOpenDern>2</nbrOpenDern>
</RessouresScanVb>je souhaite remplacer 2 par une autre valeur et j'ai écrit la fonction suivante:
''' <summary> ''' Sauvegarde la valeur de la ressource spécifiée ''' </summary> ''' <param name="cNameRessource">Nom de la ressource</param> ''' <param name="cValueRessource">Valeur</param> Function SetValueRessource(ByVal cNameRessource As String, ByVal cValueRessource As String) As Object Dim oRetValue As Object = Nothing If ExistFile(cFileRes) Then Try Dim oStream As FileStream = New FileStream(cFileRes, FileMode.Open) Dim oXDoc As XmlDocument = New XmlDocument() oXDoc.Load(oStream) Dim oRoot As XmlElement = oXDoc.DocumentElement For Each oParam As XmlElement In oXDoc If oParam.Name = cNameRessource Then oParam.Value = cValueRessource End If Next oXDoc.Save(oStream) Catch ex As Exception MsgBox(ex.Message & ex.Source) End Try End If Return oRetValue End Function
J'obtiens le fichier suivant:
<RessouresScanVb> <nbrOpenDern>2</nbrOpenDern> </RessouresScanVb><RessouresScanVb> <nbrOpenDern>2</nbrOpenDern> </RessouresScanVb>
c'est naturellement erroné. D'autant plus que la valeur du paramètre n'est pas 2. Pouvez-vous m'expliquer d'ou vient l'erreur de cette fonction? Comment dois-je l'écrire?
Merci beaucoup de votre réponse.
Cordialement
Paul
Réponses
-
Bonjour,
Essayez avec XmlNode au lieu de XmlElement comme ceci:oXDoc.Load(oStream) Dim noeud As XmlNode = oXDoc.SelectSingleNode("/RessouresScanVb/nbrOpenDern") Dim s As String = noeud.InnerText noeud.InnerText = "4" oXDoc.Save("chemin du fichier")
Cordialement,
Nina
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
- Marqué comme réponse Paul Van Walleghem mercredi 22 février 2017 11:42
Toutes les réponses
-
Bonjour,
Essayez avec XmlNode au lieu de XmlElement comme ceci:oXDoc.Load(oStream) Dim noeud As XmlNode = oXDoc.SelectSingleNode("/RessouresScanVb/nbrOpenDern") Dim s As String = noeud.InnerText noeud.InnerText = "4" oXDoc.Save("chemin du fichier")
Cordialement,
Nina
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
- Marqué comme réponse Paul Van Walleghem mercredi 22 février 2017 11:42
-
Ca marche. Merci beaucoup de votre conseil!
Cordialement,
P.S: Voici la fonction nouvellement écrite pour info.
Function SetValueRessource(ByVal cNameRessource As String, ByVal cValueRessource As String) As Boolean Dim bRetValue As Boolean = False If ExistFile(cFileRes) Then Try Dim oStream As FileStream = New FileStream(cFileRes, FileMode.Open) Dim oXDoc As XmlDocument = New XmlDocument() oXDoc.Load(oStream) Dim oRoot As XmlElement = oXDoc.DocumentElement Dim cExprXpath As String = "/" & oRoot.Name & "/" & cNameRessource Dim noeud As XmlNode = oXDoc.SelectSingleNode(cExprXpath) noeud.InnerText = cValueRessource oStream.Dispose() oXDoc.Save(cFileRes) bRetValue = True Catch ex As Exception MsgBox(ex.Message & ex.Source) End Try End If Return bRetValue End Function