Meilleur auteur de réponses
Lire un fichier XML avec Listview1

Question
-
Bonjour,
mon xml :
<PlayerSave version="4"> <Tutorial lockedContracts="5" complete="1" playedIntro="City-3" /> ...etc <Intro done="false" scenesPlayed="" npcsMet="" seenConstruction="false" /> <Storage> <Entity type="1" ID="1194" /> <Entity type="1" ID="1341" /> <Entity type="5" ID="545" count="999997" /> <Entity type="5" ID="543" count="999999" /> <Entity type="5" ID="544" /> <Entity type="5" ID="481" count="999989" /> <Entity type="5" ID="441" count="999995" /> <Entity type="5" ID="425" count="999999" /> <Entity type="5" ID="442" count="999997" /> <Entity type="5" ID="790" count="999999" /> <Entity type="5" ID="799" /> <Entity type="5" ID="614" count="999998" /> <Entity type="5" ID="429" count="999970" /> <Entity type="5" ID="431" count="999966" /> <Entity type="5" ID="457" count="999988" /> <Entity type="15" ID="33" /> <Entity type="5" ID="550" /> </Storage> <Inventory level="1" type="3" capacity="3" /> <Inventory level="1" type="4" capacity="-1" /> <Inventory level="1" type="2" capacity="2147483647" /> <Inventory level="1" type="1" capacity="2147483647" /> <Inventory level="1" type="0" capacity="-1" />
Mon problème c'est comment afficher dans listview1 dans storage tous les count avec son ID.
exemple :
- 545 999997
- 543 999999 ..etc
voici mon code :
For Each Node2 As Xml.XmlElement In document.SelectNodes("PlayerSave/Storage/Entity") Dim item As ListViewItem = ListView2.Items.Add(Node2.GetAttribute("ID")) item.SubItems.Add(Node2.GetAttribute("count")) Next
Pouvez-vous me dire comment faire pour afficher dans listview1 tous les count avec son ID?Merci de votre compréhension,
- Modifié zorro591 dimanche 13 août 2017 10:35
Réponses
-
Bonjour zorro591,
Essayez avec le code suivant:
For Each Node2 As Xml.XmlElement In xDoc.SelectNodes("PlayerSave/Storage/Entity") Dim count As String = Node2.GetAttribute("count") If Not String.IsNullOrEmpty(count) Then Dim item As ListViewItem = ListView2.Items.Add(Node2.GetAttribute("ID")) item.SubItems.Add(count) End If Next
Cordialement,
NinaMicrosoft 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 zorro591 mercredi 16 août 2017 18:20
-
Bonjour,
Vous pouvez utiliser SelectNodes au lieu de SelectSingleNode. Le code suivant compare chaque nœud avec la valeur de la première colonne de votre ListView. On sauvegarde seulement les valeurs de la deuxième colonne qui ont été modifiées.
For Each Node3 As XmlElement In xDoc.SelectNodes("/PlayerSave/Storage/Entity") Dim count As String = Node3.GetAttribute("count") Dim id As String = Node3.GetAttribute("ID") For i = 0 To ListView1.Items.Count - 1 If id = ListView1.Items:i.Text AndAlso count <> ListView1.Items:i.SubItems(1).Text Then Node3.Attributes("count").Value = ListView1.Items:i.SubItems(1).Text End If Next Next
Cordialement,
NinaMicrosoft 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 zorro591 mercredi 16 août 2017 18:19
Toutes les réponses
-
Bonjour,
Consultez les solutions proposées:
Add item to Listview control
C# listView, how do I add items to columns 2, 3 and 4 etc?Vous pouvez uliliser un converteur de code si vous avez besoin.
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.
- Modifié Nina ZaekovaMicrosoft contingent staff, Moderator lundi 14 août 2017 10:15
-
Bonjour,
merci de c'est réponse Nina mais je savais comment faire pour ajouter dans listview1.
voici en image ce que ça donne :
si c'est possible seulement afficher dans listview1 si il y a ID avec son count dans le fichier XML?
Comment faire pour afficher son ID et son count dans listview1?
Merci de votre compréhension,
-
Bonjour zorro591,
Essayez avec le code suivant:
For Each Node2 As Xml.XmlElement In xDoc.SelectNodes("PlayerSave/Storage/Entity") Dim count As String = Node2.GetAttribute("count") If Not String.IsNullOrEmpty(count) Then Dim item As ListViewItem = ListView2.Items.Add(Node2.GetAttribute("ID")) item.SubItems.Add(count) End If Next
Cordialement,
NinaMicrosoft 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 zorro591 mercredi 16 août 2017 18:20
-
Merci Nina pour réponse , ça fonctionne parfaitement.
j'ai une dernière question par rapport avec la sauvegarde du fichier.
voici le code save :
For Each Node3 As XmlNode In document.SelectSingleNode("/PlayerSave/Storage/Entity") For i = 0 To ListView1.Items.Count - 1 Node3.Attributes.GetNamedItem("count").Value = ListView1.Items(i).SubItems(1).Text Next Next document.Save(Me.FilePath)
mon problème c'est quand je change la valeur dans listview1 et je clique sur le bouton enregistrer. Il m'affiche enregistrement réussite. mais quand je vérifie mon fichier la valeur n'est pas changer.
pouvez-me dire pourquoi la valeur n'est pas changer quand je sauvegarde? il y a pas de message erreur?
Merci de votre réponse,
cordialement,
-
Bonjour,
Voici le code modifier :
document.Load(parcourir) For Each node As Xml.XmlElement In document.SelectSingleNode("PlayerSave/Storage") Dim count As String = node.GetAttribute("count") If Not String.IsNullOrEmpty(count) Then For i = 0 To ListView1.Items.Count - 1 count = ListView1.Items(i).SubItems(1).Text Next End If Next document.Save(parcourir)
J'ai toujours le mème problème pour enregistrer la valeur modifier par rapport au fichier XML.
Avez-vous une idées comment je pourrais faire pour enregistrer la valeur modifier avec listview1?
Merci de votre compréhension,
-
Bonjour,
Vous pouvez utiliser SelectNodes au lieu de SelectSingleNode. Le code suivant compare chaque nœud avec la valeur de la première colonne de votre ListView. On sauvegarde seulement les valeurs de la deuxième colonne qui ont été modifiées.
For Each Node3 As XmlElement In xDoc.SelectNodes("/PlayerSave/Storage/Entity") Dim count As String = Node3.GetAttribute("count") Dim id As String = Node3.GetAttribute("ID") For i = 0 To ListView1.Items.Count - 1 If id = ListView1.Items:i.Text AndAlso count <> ListView1.Items:i.SubItems(1).Text Then Node3.Attributes("count").Value = ListView1.Items:i.SubItems(1).Text End If Next Next
Cordialement,
NinaMicrosoft 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 zorro591 mercredi 16 août 2017 18:19
-