IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# Lecture, écriture et modification de fichier XML


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut C# Lecture, écriture et modification de fichier XML
    Bonjour, je développe actuellement un logiciel pour un serveur de jeu et j'aimerai ajouter une liste de joueurs à surveiller, je voulais le faire via base de données mais je n'en ai pas à disposition et j'ai pas l'argent pour payer un hébergement, je ne peux pas l'héberger moi même non plus car je partage le pc et si je dois fermer ma session ou l'éteindre le logiciel ne pourra plus s'y connecter.

    J'ai donc décidé de passer par du XML stocké sur un FTP mais le soucis c'est que je n'arrive pas à faire le système que je veux, je m'explique :

    Déjà voici un exemple de mon XML :
    Code xml : 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
    <test>
    <j1>
    <nom>
    test1
    </nom>
    <steamid>
    test2
    </steamid>
    <raison>
    test3
    </raison>
    <statut>
    test4
    </statut>
    </j1>
    </test>

    en gros j'aimerai pouvoir donc : Lire le fichier et pouvoir l'afficher dans une listbox ou quelque chose comme ça avec plusieurs colonnes tel que :
    -------------------------------------
    |Joueur | Steam ID | Raison | Statut |
    |-----------------------------------|
    | test | test | test | test |
    -------------------------------------
    donc détecter si le noeud j1 existe, l'afficher, j2, l'afficher etc, en suite, de même pour l'ajout de joueurs à surveiller
    détecter si j1 existe, si oui, tester si j2 existe, si j2 existe pas, créer le noeud j2 avec tout ses sous noeuds donc joueur, steamid, raison, statut.
    J'essaye d'éviter de faire un énorme bloc de code avec seulement des gros blocs comme ça :
    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
    if (le noeud j1 existe)
    {
     if (j2 existe)
     {
      if(j3 existe)
      {
      }
      else
      {
      }
     }
     else
     {
     }
    }
    Car si y'a une centaine de joueurs voir plus avec le temps ça serait beaucoup trop gros et je pense qu'il y a plus simple

    j'essaye depuis presque une semaine de faire ça, j'ai cherché pendant des heures sur des forums anglais et français mais je n'ai absolument rien trouvé..

    Je précise que mon XML se trouvera sur un FTP donc il faudrait pouvoir le lire soit directement sur mon FTP soit le télécharger pour le lire mais ça je sais faire, et du coup si une personne ajoute un joueur à surveiller, que ce soit mis à jour sur mon FTP.

    Je suis désolé si il manque des détails ou si c'est trop long mais je suis vraiment perdu :/ j'ai jamais touché au XML via c# et là malgré toutes mes recherches j'ai absolument rien :/

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 661
    Par défaut
    Bonjour,

    Bon tu t'en doutes déjà un peu mais un fichier XML comme base de données, en + hosté sur un FTP, c'est pas la joie, et pour beaucoup de raisons.

    Il existe des solutions pour avoir des BDD gratuites, limitées bien sûr (sinon ça ne serai pas gratuit) comme FreeMYSQLhosting ou encore Db4Free, il en existe bien d'autres.

    Sinon si tu tiens vraiment a ta solution, tu peux très facilement parcourir autant de nœuds que tu souhaites, petit exemple ici : https://stackoverflow.com/questions/...h-xml-document
    Comme tu as accès aux valeurs de chaque nœud, tu peux ensuite les afficher dans une List Box. A toi ensuite de bien structuré ton fichier XML.

    Je ne connais pas ton niveau en programmation mais il est évident qu'une énorme cascade de if est évitable.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut Réponse
    Bonjour, je suis donc passé sur un des sites que tu m'as conseillé, mais j'ai encore un petit soucis x)
    J'utilise un DataGridView pour afficher la liste des joueurs à surveiller, le problème c'est qu'au lieu de tous me les lister, il ne me liste que le dernier.
    Captures d'écrans : http://prntscr.com/iz3uck et http://prntscr.com/iz3uez
    Mon code : http://prntscr.com/iz3uk8

    (en texte)

    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
    34
    35
    36
    37
            private void actualisation()
            {
     
                dataGridView1.Rows.Clear();
                try
                {
                    if (cnx.State == ConnectionState.Closed)
                    { cnx.Open(); }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
     
                if(cnx.State == ConnectionState.Open)
                {
                    cnx.Close();
                    cnx.Open();
                    try
                    {
                        string insertQuery = "select * from surveillance";
                        MySqlCommand myCommand = new MySqlCommand(insertQuery, cnx);
                        reader = myCommand.ExecuteReader();
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                dataGridView1.Rows.Clear();
                                dataGridView1.Rows.Add(reader[0].ToString(), reader[1].ToString(), reader[2].ToString(), reader[3].ToString());
     
                            }
                            reader.Close();
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }
     
                }
            }

  4. #4
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Sinon, en base de données légères, il y a SQLite. Un de nos membres a écrit un bon tutoriel à ce sujet.

    Si tu ne connais pas, SQLite, c'est une base de donnée en mode fichier. De base, il est fait pour être embarquée dans une application afin de servir de mini base de données. Bien évidement, cela n'est pas aussi puissant qu'un mastodonte comme SQL Server ou Postgres, mais cela permet de remplacer aisément un fichier XML et d'utiliser des requêtes SQL, de gérer les contraintes de clé étrangères, des index, etc.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Bonjour, merci de l'info, petite question du coup, est ce que cette base de données sera modifiable et accessible par toute personne utilisant le logiciel ? car je vois pas ou serai le serveur du coup pour que si un utilisateur la mette à jour elle soit mise à jour partout

Discussions similaires

  1. problème de lecture de é et à dans un fichier xml
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 21/04/2007, 23h43
  2. [BCB 6] Classe création, modification de fichier … XML
    Par almisuifre dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/09/2006, 03h23
  3. [C#]Lecture et Ecriture d'un fichier .xml
    Par debug dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2006, 12h41
  4. Modification de fichier XML avec XSLT
    Par osmoz dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/07/2005, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo