Bonjour,
J'aimerais savoir comment faire pour lister des nœuds en particulier dans un fichier XML et modifier la valeur d'un attribut des ces nœuds.
Pour être plus précis, dans le fichier XML d'exemple ci-dessous, j'aimerais pouvoir sélectionner tous les nœuds filter dont le type est "PersistedFilter" et modifier la valeur de leur attribut oid
J'ai un bout de code qui me permet bien de lister les nœuds du fichier XML qui m'intéressent, mais je ne sais pas comment modifier la valeur de l'attribut oid.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?xml version="1.0" encoding="UTF-8"?> <filters> <filter type="PersistedFilter" category="1" path="Ship Filters\Drawing\Object Filters\Object Types\Grid Systems\GridPlane Strong Frame" oid="{0000272E-0000-0000-3600-8C0CAC584004}"> <askFilter/> </filter> <filter type="FlyingFilter" category="1" path="Ship Filters\Drawing\Object Filters\Object Types\Grid Systems\GridPlane Strong Frame" oid="{0000272E-0000-0000-3600-8C0CAC584004}"> <askFilter/> </filter> <filter type="PersistedFilter" category="1" path="Ship Filters\Drawing\Object Filters\Object Types\Grid Systems\GridPlane Strong Frame" oid=""> <askFilter/> </filter> <filter type="PersistedFilter" category="1" path="Ship Filters\Drawing\Object Filters\Object Types\Grid Systems" oid="{0000272E-0000-0000-3600-8C0CAC584005}"> <askFilter/> </filter> </filters>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub BtnTestXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTestXML.Click Dim xpathDoc As XPathDocument Dim xmlNav As XPathNavigator Dim ExpXPath As String Dim Nodes As XPathNodeIterator Dim oid As String Dim path As String Try xpathDoc = New XPathDocument("C:\test.xml") xmlNav = xpathDoc.CreateNavigator() 'On crée ici l'expression XPath de recherche des filtres ExpXPath = "//filter[@type='PersistedFilter' and @oid != '']" 'On lance la recherche Nodes = xmlNav.Select(xmlNav.Compile(ExpXPath)) ' On vérifie si la recherche a été fructueuse While (Nodes.MoveNext()) path = Nodes.Current.GetAttribute("path", "") oid = Nodes.Current.GetAttribute("oid", "") AfficherTrace("path = " & path & "; oid = " & oid) End While Catch ex As XPathException System.Console.WriteLine("XMLException: " + ex.Message) Catch ex As Exception System.Console.WriteLine("Exception: " + ex.Message) End Try End Sub
Partager