none
Lire un fichier XML avec Listview1 RRS feed

  • 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 :

    1. 545 999997
    2. 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
    dimanche 13 août 2017 08:04

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,
    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 zorro591 mercredi 16 août 2017 18:20
    lundi 14 août 2017 09:22
    Modérateur
  • 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,
    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 zorro591 mercredi 16 août 2017 18:19
    mercredi 16 août 2017 09:57
    Modérateur

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.


    lundi 14 août 2017 08:03
    Modérateur
  • 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,

    lundi 14 août 2017 08:19
  • 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,
    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 zorro591 mercredi 16 août 2017 18:20
    lundi 14 août 2017 09:22
    Modérateur
  • 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,

    lundi 14 août 2017 10:33
  • 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,

    mardi 15 août 2017 13:02
  • 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,
    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 zorro591 mercredi 16 août 2017 18:19
    mercredi 16 août 2017 09:57
    Modérateur
  • Merci Nina pour la réponse.

    Cordialement,

    mercredi 16 août 2017 18:20