[C#] INI vs XML, DataSet vs INI [Résolu]

Signaler
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
Actuellement, mon programme utilise un fichier Ini pour sa configuration.
Voulant migrer ce fichier vers un format XML, plusieurs choix sont possibles.

- Fouiner dans le namespace System.Configuration
- Utiliser les fonctions bas niveau de XML (XmlTextWriter, WriteStartElement....)
- Utiliser un DataSet avec ReadXml & WriteXml
- Base des Registres
- une solution que j'aurais oublié ?

La question : Quel est donc le meilleur choix pour stocker ses parametres de config dans un fichier XML ou autre ?

Merci

----------------------------
C++ forever
C# amateur

8 réponses

Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Voici un bout de code avec un fichier de config XML :

source du fichier XML :

<?xml version="1.0" encoding="utf-8" ?>
Configuration: 

<FichierLOG>c:\log.txt</FichierLOG>
c:\log.pdf/



<SQLSERVER>
<source>BASE</source>
PASS

<login>LOGIN</login>
<server>SERVER</server>
</SQLSERVER>


Code a mettre dans le Application_Start ou autre init :

//on stocke le fichier dans un objet XML
XmlDocument xmlConnectConfiguration = new XmlDataDocument ();
StreamReader txtReader = new StreamReader( Server.MapPath("")+ "\\..\\config.xml",true);
XmlTextReader XMLreader = new XmlTextReader( txtReader);
xmlConnectConfiguration.Load(XMLreader);

// Infos nécessaires à la génération d'un doc PDF
string pdfPath = xmlConnectConfiguration.SelectSingleNode("//Config/Path/pdfPath").FirstChild.Value;


// Chemin du fichier de log
string logPath = xmlConnectConfiguration.SelectSingleNode("//Config/Path/excelPath").FirstChild.Value;


//on récupère les infos nécessaires pour la connection
string source = xmlConnectConfiguration.SelectSingleNode ("//Config/SQLSERVER/source").FirstChild.Value;
string password = xmlConnectConfiguration.SelectSingleNode ("//Config/SQLSERVER/password").FirstChild.Value;
string login = xmlConnectConfiguration.SelectSingleNode ("//Config/SQLSERVER/login").FirstChild.Value;
string server = xmlConnectConfiguration.SelectSingleNode ("//Config/SQLSERVER/server").FirstChild.Value;
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

Voici un début de réponse :
http://www.c-sharpcorner.com/Code/2002/April/XMLConfigInWinForms.asp

vous en pensez quoi ?

----------------------------
C++ forever
C# amateur
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

vala je poste ce que je trouve au passage sur le sujet histoire d'avoir qql chose de complet :

http://www.neowin.net/forum/lofiversion/index.php/t303780.html

----------------------------
C++ forever
C# amateur
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Une solution oubliée est la sérialisation.
Dans pas mal de situation (surtout pour les fichiers de config) c'est une solution idéale et simple à implémenter....

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

personne aurait un exemple sous la main ?

Durant les recherches, en effet, j'ai bien vu des Tag[XMLtruc] c p-e ma solution.



Notre amis le Coq, j'suis sur qu'il a une idée de génie qui traine dans un coin ;p

----------------------------
C++ forever
C# amateur
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Mais y'a pas grand chose à comprendre, tu as un object que tu veux sérialiser et le framework t'offre le XmlSerializer qui met entre autres deux méthodes à disposition, Serialize(object o, string path) et Deserialize(string path). C'est tout!

Ha oui, la class de l'object à (de)serializer doit implémenter ISerialzable je crois, il faut faire qqch comme

[Serializable]
Class Test
{
// le reste
}

Y'a pleins d'exemples de code-sources sur ce site ! Suffit de chercher un peu...

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlSerializationXmlSerializerClassTopic.asp

mais pourquoi doit on forcément avoir un constructeur par défaut public ainsi que des membres public pour que ca passe ?
Parce que si je n'ai pas envie d'exporter vers l'extérieur certains membres je fais comment ?

----------------------------
C++ forever
C# amateur
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

bon c pas possible :
http://www.dotnet247.com/247reference/msgs/56/282060.aspx

Pour des raisons de sécurité.

----------------------------
C++ forever
C# amateur