Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Utilisation d'un XML

    18 mai 2011 à 15:37:52

    Bonjour,

    Je travaille actuellement sur un projet m'imposant d'utiliser un .ini pour lire et/ou écrire une configuration pour une connexion bluetooth.

    Au total je me retrouve avec 5 informations différentes donc un fichier .ini XML assez simple.

    Le problème est que je n'ai pas réussis à trouver de tutoriel expliquant simplement l'utilisation de ces fichier .ini XML.

    Ainsi j'aurai besoin d'un petit coup de pouce s'il vous plais :euh:

    Voici le fichier :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <configuration>
    	<connexionBluetooth>
    		<!-- Port COM utilisé -->
    		<PortCOM>COM7</PortCOM>
    		<!-- Vitesse de transmission -->		
    		<Baudrate>57600</Baudrate>
    		<!-- Parité -->		
    		<Parité>None</Parité>
    		<!-- Nombre de bit -->		
    		<NombreDeBit>8</NombreDeBit>
    		<!-- Bite de stop -->
    		<BitDeStop>One</BitDeStop>
    	</connexionBluetooth>
    </configuration>
    
    • Partager sur Facebook
    • Partager sur Twitter
    "Whatever it is, it's twenty times heavier than a boot !"Leela ~ Futurama
    Anonyme
      18 mai 2011 à 16:23:26

      Utiliser des .ini en C# c'est pas pratique...si c'est imposé, c'est du sadisme...

      Le premier truc qui me vient à l'esprit serait de séparer le fichier en un tableau de string, un par ligne.
      Puis, tu itéres sur les lignes ; si elle est vide tu l'ignores, si le premier caractère est un [ tu définis une nouvelle section (dans laquelle tu mets les infos tant que tu ne rencontre pas un autre [ ) et si c'est une valeur tu stockes la valeur avant le symbole = et la valeur après (regarde du côté des Dictionary<string, string>).
      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2011 à 16:33:30

        C'est pas très optimisé tout ça (parlant du fichier .ini)... Il me semble qu'un fichier config serait beaucoup plus adapté... Mais bon, ça sent en effet le parsing du document comme Aethec le propose...
        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2011 à 17:35:11

          Bah a vrai dire c'est plus un choix de ma part mais le XML ou les fichiers config sont envisageable mais là encore j'aurai besoin d'une véritable aide car j'ai eu beau chercher un peu partout et je n'ai rien trouvé de clair du coup j'ai du mal à m'y retrouver. :(
          • Partager sur Facebook
          • Partager sur Twitter
          "Whatever it is, it's twenty times heavier than a boot !"Leela ~ Futurama
          Anonyme
            18 mai 2011 à 17:42:37

            T'as le choix...soit tu utilises les fichiers de configuration déjà fournis par .NET, et dans ce cas-là c'est plutôt simple : tu as un designer pour dans les propriétés de ton projet.
            Tu peux accéder à un setting en utilisant MonProjet.Properties.Settings.Default.NomDuSetting (ou, plus simplement, ajoute un using MonProjet.Properties pour ne pas avoir à l'écrire tout le temps).

            Sinon tu peux aussi créer toi-même ton fichier XML ; dans ce cas-là, il te faut créer une classe "conteneur" qui contient tout ce que tu veux sauvegarder, et la sérialiser avec un XmlSerializer puis gérer l'écriture et la lecture toi-même, mais c'est un peu plus compliqué.

            Le désavantage des Settings inclus à .NET c'est qu'ils sont dépendant de la version et de l'assembly ; les Settings seront pas gardés dans et hors de Visual Studio, ni entre différente configuration de build (Debug ou Release par exemple), ni avec les versions successives de ton logiciel.
            • Partager sur Facebook
            • Partager sur Twitter
              25 mai 2011 à 14:03:37

              J'ai bien cherché à créer un fichier de configuration via Visual Studio mais apparemment il ne propose pas ce genre de fichier pour les app Smart Device sous Windows mobile...

              Un ptit tuto sur l'utilisation du XML en C# ne serait pas de refus si jamais vous avez =/ Surtout que le fichier XML est pas bien compliqué....
              • Partager sur Facebook
              • Partager sur Twitter
              "Whatever it is, it's twenty times heavier than a boot !"Leela ~ Futurama
              Anonyme
                25 mai 2011 à 16:31:35

                Crée une classe (dans mon exemple ci-dessous, Settings) qui contient tout ce que tu veux sauver.
                Ensuite tu peux faire un truc comme ça (assez explicite comme code je pense)
                public static class SettingsHelper
                {
                    // Noms du fichier et du dossier
                    private const string FileName = "settings.xml";
                    private const string FolderName = "MyApp";
                    // On sauve ça dans AppData
                    private static readonly string FolderPath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ) + "\\" + FolderName );
                    private static readonly string SettingsPath = Path.Combine( FolderPath + "\\" + FileName );
                
                    public static Settings ReadSettings()
                    {
                        if ( !File.Exists( SettingsPath ) )
                        {
                            // première utilisation du logiciel
                            // ou alors l'utilisateur a détruit le fichier de config
                            return null;
                        }
                        using ( StreamReader reader = new StreamReader( SettingsPath ) )
                        {
                            XmlSerializer serial = new XmlSerializer( typeof( Settings ) );
                            return (Settings) serial.Deserialize( reader );
                        }
                    }
                
                    public static void SaveSettings( Settings settings )
                    {
                        XmlSerializer serial = new XmlSerializer( typeof( Settings ) );
                        if ( !Directory.Exists( FolderPath ) )
                        {
                            // première sauvegarde du fichier
                            // ou alors l'utilisateur a détruit le dossier
                            Directory.CreateDirectory( FolderPath );
                        }
                        using ( StreamWriter writer = new StreamWriter( SettingsPath ) )
                        {
                            serial.Serialize( writer, settings );
                        }
                    }
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  26 mai 2011 à 14:52:59

                  Je te conseille ce tuto http://dotnet-france.com/Documents/Web [...] 20ADO.NET.pdf

                  Il t'explique vraiment tout ce que tu peut faire, je l'ai moi même utilisé :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mai 2011 à 14:20:38

                    Ce qui est interessant aussi c'est le Linq to XML, mais c'est un peu plus poussé :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mai 2011 à 2:42:59

                      Citation : vitelize

                      Ce qui est interessant aussi c'est le Linq to XML, mais c'est un peu plus poussé :)


                      En fait, je dirais que c'est plus facile à utiliser qu'un XmlSerializer.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 mai 2011 à 1:07:28

                        Utilise MSDN et recherche dans le SDK, si il n'y pas de classe XML.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [C#] Utilisation d'un XML

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown