begin process at 2012 02 10 20:19:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Fichier / Disque

 > 

Le XML pour fichier de configuration?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Le XML pour fichier de configuration?

mardi 2 mai 2006 à 17:14:17 | Le XML pour fichier de configuration?

bubbathemaster

Comme je viens de me mettre à .NET, je me suis dit que j'allais laisser tomber les vieux fichiers ini pour la configuration au profit du XML. 3 points m'ont poussé à me diriger vers le XML :
 - Le XML, c'est in
 - Le XML, c'est branché
 - Le XML, c'est la classe
Partant avec tous ces arguments -vous conviendrez- fortemment convaincants, mon application .NET doit donc utiliser un xml en guise de fichier de configuration.

Mais voilà, avec mes vieux fichiers INI, Pour écrire une valeur, il suffisait de faire f(header,variable,valeur,fichier) avec la fonction adéquate, et pour lire une valeur f(header,variable,fichier). Je pensais donc que Microsoft qui a beaucoup fait pour promouvoir ce format nous avait concocté des fonctions du même genre.

Que neni ! C'est quoi ce bordel ? Y'a 35610 façons d'ouvrir un fichier XML et 28418451 façons d'écrire dedans...

Tout ça pour en venir à ma question, si je veux utiliser le XML pour fichier de configuration, je fais comment pour récupérer la valeur d'une rubrique précise ?

(pour l'instant j'ai trouvé la méthode :
            XmlDocument config = new XmlDocument();
            config.Load(Application.StartupPath + "\\configuration.xml");

            XmlNodeList elemList = config.GetElementsByTagName("ma_rubrique");
            variable = elemList[0].InnerText;
mais ça à pas l'air très propre)

Et surtout, comment je fais pour écrire une valeur précise dans ce µ%$ de XML sans écraser tout le fichier ?

Merci

mercredi 3 mai 2006 à 10:07:30 | Re : Le XML pour fichier de configuration?

sebseb42

Réponse acceptée !

en gros, tu peux faire ca, si tu veux, a mon avis c'est la facon la plus simple d'acceder a un element.




XmlDocument doc = new XmlDocument();
doc.Load(fichier_xml);

XmlNode section = doc.SelectSingleNode("root/ma_section/ma_sous_section");
// modification de la XmlNode, genre section.Name = "truc" ou autre...

doc.Save(fichier_xml);

mercredi 3 mai 2006 à 10:14:32 | Re : Le XML pour fichier de configuration?

24 ans

Salut cher ami
essaye ce bout de code

XmlDocument xmlDoc= new XmlDocument();

xmlDoc.Load(Application.StartupPath +"\\Configuration.xml");

XmlNodeReader xnr= new XmlNodeReader(xmlDoc);

ds=new DataSet() ;

ds.ReadXml(xnr); // à ce stade votre DataSet est rempli et ainsi vous pouvez effectuer vos modification
                                // soit ajouter ou modifier ou supprimer
                                // Exemple 
 ds.Tables["Numero du DataTable"].Rows["Numéro de ligne"]["Nom Colonne"]= "Visual Studio 2005";
                               
                                //Numéro de ligne signifie le numero de la ligne dans la table
                                // il faut savoire que le DataSet contient des DataTable

  String  Chaine=  ds.Tables["Numero du DataTable"].Rows["Numéro de ligne"]["Nom Colonne"].ToString(): 

mercredi 3 mai 2006 à 19:03:44 | Re : Le XML pour fichier de configuration?

bubbathemaster

Ta fonction marche seb.

Par contre, doc.Load charge tout le fichier XML en mémoire non ? Là ca va parceque j'ai un ptit XML de configuration, mais pour les grosses applis, ca ne pose pas de problème?

Quant aux Datasets, je ne vais pas y toucher pour le moment, m'ai j'essayerai quand meme la deuxième solution proposée par curiosité ;o

Merci :>
mercredi 3 mai 2006 à 22:20:35 | Re : Le XML pour fichier de configuration?

sebseb42

quand tu ouvre un fichier XML de plusieurs Mega avec Internet Explorer (pour le visualiser) il faut bien qu'il charge tout. Parfois c'est un peu lent si le fichier est vraiment massif, mais je ne vois pas en quoi ca pose un probleme :)

jeudi 4 mai 2006 à 23:54:33 | Re : Le XML pour fichier de configuration?

bubbathemaster

Non, ce que je veux dire, c'est qu'il pourrait lire le fichier XML au fur et à mesure sans tout charger dans la RAM. Bon ok je chipotte :p

Un autre truc me chagrine, c'est le OuterXml. En gros, avec ta méthode, c'est super je peux récupérer simplement la string entre les balises via

XmlNode section = doc.SelectSingleNode("root/ma_section/ma_sous_section");
section.InnerText

Mais si j'ai une balise de type

<hello propriete1="ok" propriete2="ko"/>

La seule façon que j'ai trouvé de récupérer les attributs ok et ko, c'est d'utiliser
XMLNode.OuterXml et de traiter toute la chaine de caractère "hello propriete1="ok" propriete2="ko"" à grands coups de splits et autres. Bref, c'est pas joli joli. Y'a t-il une autre méthode?
vendredi 5 mai 2006 à 09:52:13 | Re : Le XML pour fichier de configuration?

sebseb42

Réponse acceptée !

Oula oula, biensure que non... tu recupère un XmlNode, donc il faut faire comme ca :

XmlAttribute attr = section.Attributes["propriete1"];
if (attr != null)
      val = attr.Value;

attr = section.Attributes["propriete2"];
if (attr != null)
      val = attr.Value;

tu peux aussi faire :

foreach (XmlAttribute current_attr in section.Attributes)
      // traitement de l'attribut current_attr

Si tu utilise un IDE qui te permet de voir le contenu d'un objet lorsque tu tappe . (point)
(VisualStudio, Eclipse, SharpDevelop, etc...) dans ce cas je te conseil de bien regarde le contenu de la class XmlNode, elle recèlle plusieurs trucs très interessant :)

vendredi 5 mai 2006 à 17:39:22 | Re : Le XML pour fichier de configuration?

bubbathemaster

Ah c'est donc planqué dans Attributes ^^

Merci :>

Effectivement j'utilise un IDE et j'avais tenté de trouvé moi meme ou se trouvaient ces données avec le debugger de Visual Studio. Et le seul endroit où j'ai trouvé qu'on pouvait récupérer les données, c'était dans OuterXml. Je devais pas être bien reveillé/


Cette discussion est classée dans : fichier, écrire, valeur, xml, configuration


Répondre à ce message

Sujets en rapport avec ce message

[C#] INI vs XML, DataSet vs INI [ par scoubidou944 ] Actuellement, mon programme utilise un fichier Ini pour sa configuration.Voulant migrer ce fichier vers un format XML, plusieurs choix sont possibles. fichier xml [ par maroonet ] bonjour je veux écrire un fichier XML et je veux le remplir par des donnés,ces donnés sont celle que j ai sélectionne dans une datagrid.comment je pe windows forms checkbox [ par francoisbonn ] Je voudrais savoir comment faire pour passer une valeur d origine xml true /false comme valeur de depart d une checkbox si ma valeur du fichier xml es Chargement listbox via fichier en WPF [ par sfurmanek ] Bonjour, je cherche désespéremment à remplir une listview avec un fichier XML pour avoir un résultat sous forme de table. Mon fichier XML (des table modifier un fichier XML [ par doufdouf51 ] Bonjour Je travail en C# avec le compact framework. je dois modifier une valeur entre deux balise dans mon fichier XML. J'ai trouver des méthodes pour Comment lire le contenu d'un fichier Xml en c# [ par haloulou87 ] Salut, J'ai cherché comment je peut lire un fichier Xml et j'en ai trouvé pas mal de chose mais tous dans le cas ou les balises sont de la forme suiva Problème fichier de configuration après installation [ par Djedje252 ] Bonjour, j'ai développer une application en c# sur visual studio 2008 permettant de gérer une vidéothèque. Quand je lance l'application depuis visu télécharger un fichier XMl [ par maroonet ] bonjour, je travail avec le spicIE pour faire un plugin et je veux télécharger un fichier XML qui se trouve dans un serveur. comment je peux faire ce Recherche par filtre dans un fichier XML [ par NikkyBoy ] Bonjour a tous, Ceci est mon premier message sur le forum, veuillez donc m'excuser si je ne suis pas trés précis. Comme le titre le suggère je doit


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales