[VB.NET] Sauvegarde en fichier xml

Sauvegarde en fichier xml [VB.NET] - C#/.NET managed - Programmation

Marsh Posté le 09-08-2009 à 14:05:25    

Bonjour,
 
Depuis quelques temps déjà, je suis entrain de programmer un jeu mais, il devient de plus en plus évident que le problème de la sauvegarde doit être réglée. Bien qu'ayant fait plusieurs recherches sur divers sites et d'avoir utilisé la fonction rechercher sur ce forum, je ne trouve rien qui me permet d'avoir des informations très précises.
 
Voici ce que je cherche:
-Comment créer le code de création du fichier de sauvegarde xml ?
-Dois-je indiqué toutes les variables dans le code de création de fichier xml ? Si oui, dans quelle partie du code ?
-Quel code utilisé pour utiliser le fichier xml grâce à une option "charger" ?
 
Pour plus d'informations, je vous explique un peu plus comment je veux faire:
 
Tout d'abord, le joueur devra faire une inscription en donnant un pseudo et un mot de passe (permettant ainsi d'avoir plusieurs parties sur le même ordinateur mais empêchant n'importe qui d'accéder à une partie). Puis, lorsque le joueur voudra sauvegarder, il cliquera sur un bouton "Sauvegarder" et n'aura plus qu'à décidé d'un nom reconnaissable. Lorsqu'il reviendra sur le jeu, il pourra cliquer sur un bouton "Charger" et choisir le fichier de sauvegarde lui appartenant. Avant le chargement de ce fichier, un demande de mot de passe lui sera demandée pour vérifier l'identité.
 
Je peut concevoir tout à fait qu'il soit dur de faire ce projet mais, c'est tout ce qu'il me manque pour pouvoir faire mon jeu complètement.
 
Cordialement et en vous remerciant d'avance,
 
Orla.

Reply

Marsh Posté le 09-08-2009 à 14:05:25   

Reply

Marsh Posté le 09-08-2009 à 15:51:00    

Plutôt que réinventer la roue, renseigne toi sur les fichiers "Settings" de .Net. Ca se met en place très très simplement, il n'y a rien à développer et tu n'es pas limité au stockage des types primitifs.  
Sauf si tu as des besoins poussés en matière de gestion de profils utilisateurs multiples ou de contrôle/réplication du fichier généré, je pense que c'est ce que tu veux.


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 10-08-2009 à 10:34:51    

Merci de ta réponse TotalRecall mais maintenant, j'ai un autre problème avec les fichiers "Settings" car, d'après ce que j'ai compris des rares informations que j'ai trouvé après plusieurs recherches, il semblerait que ses fichiers permettent de faire comme une sauvegarde (dit-le moi si je me trompe) mais le problème, c'est que je n'arrive pas du tout à les utiliser malgré l'aide en ligne de VB 2008. Si quelqu'un pouvait m'aider, ce serait super.

Reply

Marsh Posté le 10-08-2009 à 18:55:13    

Cela semble assez facile bien que je ne comprenne pas certaines choses:
-La solution, c'est ce que je programme ?
-Comment rajoutez le fichier ? (j'arrive pas à trouver)
-Tu dit rajouter des propriétés en les typant, mais que veut-tu dire par là ?
-Comment crypter le fichier XML ?
-Le Settings1.Default.login, je le place à l'endroit où se trouve le texte qui doit être enregistré puis utilisé, non ?
 
Ces questions peuvent avoir l'air débile mais, je suis encore assez débutant dans le domaine bien que je m'améliore rapidement de jour en jour, en partie grâce à ce que je lis sur ce forum.
 
Encore merci de vos réponses.
 
Orla

Reply

Marsh Posté le 10-08-2009 à 22:17:01    

Dans Visual Studio 2008 Express, je ne trouve pas "Fichier de paramètres" mais suite à un essai fait avant, j'ai un fichier nommé "app.config", est-ce ça ? Ensuite, pour les propriétés, je n'y comprends rien du tout. Cependant, dans la partie "Propriétés" de mon projet, j'ai "Paramètres" et dedans, un tableau qui me permet de mettre un "nom", un "type", une "portée" et une "valeur", serais-ce cela qui ferrait aussi le "Fichier de paramètres" mais en plus simple ?
 
Ceci est encore plus bête que le reste mais, dans cette partie:

Citation :

Ensuite dans ton programme, tu tapes Settings1.Default.login, et tu accèdes ainsi en lecture et en écriture directement.


Que faut-il mettre à la place du ".Click" pour que cela s'active automatiquement ? J'ai demandé si c'était dans le programme qu'il fallait le mettre mais sans me renseigner dans quelle partie exactement.
 
Merci de vos réponses et de votre patience,
Cordialement,
 
Orla.


Message édité par Orla le 10-08-2009 à 22:19:58
Reply

Marsh Posté le 23-08-2009 à 18:34:10    

Désolé pour le double-post (ce que je n'aime pas faire cela  :cry: )
 
J'aimerais bien savoir si quelqu'un peut répondre à mes questions. De plus, après avoir discuté avec mon père qui est informaticien depuis de longues années, j'en suis venu à la conclusion que le xml est le mieux donc, je reprends l'idée du xml. Désolé pour ceux qui m'avaient conseillé le .Settings mais mon père m'as assuré que ce n'était pas ce que je recherchais pour faire des sauvegardes.

Reply

Marsh Posté le 24-08-2009 à 23:47:12    

Pour créer un fichier XML simplement, utilise XmlTextWriter

Message cité 1 fois
Message édité par Kormyr le 24-08-2009 à 23:48:41
Reply

Marsh Posté le 25-08-2009 à 12:20:50    

Merci de ta réponse Kormyr mais je n'arrive pas à comprendre comment faire pour stocker des informations dans le fichier et ensuite les réutiliser et comment faire pour que tout ceci soit automatique (au chargement de la page ?). Encore merci de m'aider car, bien que j'ai du mal à comprendre plusieurs choses, je voit que vous acceptez de m'aider malgré mes multiples questions.

Reply

Marsh Posté le 25-08-2009 à 14:33:19    

Je ne comprends pas très bien ce que tu ne comprends pas.
Pour écrire le fichier XML tu utilises la classe que je t'ai donné : XmlTextWriter. Il y a des exemples très clair sur MSDN :
ex :

Citation :


 w.WriteStartElement("root" );
 w.WriteAttributeString("xmlns", "x", null, "urn:1" );
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
 w.WriteEndElement();


 
donne :
 

Citation :


 <root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
 </x:root>


 
Une fois que ton fichier XML est créé, tu peut le lire avec XmlTextReader
 
Lit bien ce qui est expliqué sur MSDN et n'hésite pas à aller sur google. Tu verra ce n'est pas bien compliqué

Reply

Marsh Posté le 25-08-2009 à 15:37:42    

Oui, j'ai compris que ce que tu as montré en premier donne ce que tu as montré en second mis, la seule chose que je n'arrive pas à comprendre avec MSDN, c'est où y mettre les multiples variables. Après, c'est peut-être moi qui ne comprend pas assez bien MSDN (je pense que ce doit être le cas)
 
Edit: le principal problème, c'est que je ne comprends pas dans ceci:
 

Citation :

w.WriteStartElement("root" );
 w.WriteAttributeString("xmlns", "x", null, "urn:1" );
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
 w.WriteEndElement();


 
ce qu'est "root", "xmlns", "x", "item", "urn:1". En fait, pour faire plus simple, je pense qu'il sera bien plus simple de me dire à quoi correspond chaque parties du code  ncar j'ai beau relire MSDN 25 fois, je n'y comprends rien. Merci de votre patience.


Message édité par Orla le 25-08-2009 à 16:24:31
Reply

Marsh Posté le 25-08-2009 à 15:37:42   

Reply

Marsh Posté le 25-08-2009 à 16:37:46    

Kormyr a écrit :

Pour créer un fichier XML simplement, utilise XmlTextWriter


You failed ! :o
Linq To Xml est largement plus simple et intuitif à utiliser que les classes de System.Xml, ça n'a rien à voir [:ciler]
Ca nécessite .NET 3.5, mais l'upgrade en vaut largement la peine.
 

Kormyr a écrit :

Je ne comprends pas très bien ce que tu ne comprends pas.
Pour écrire le fichier XML tu utilises la classe que je t'ai donné : XmlTextWriter. Il y a des exemples très clair sur MSDN :
ex :

Citation :


 w.WriteStartElement("root" );
 w.WriteAttributeString("xmlns", "x", null, "urn:1" );
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
  w.WriteStartElement("item","urn:1" );
  w.WriteEndElement();
 w.WriteEndElement();


 
donne :
 

Citation :


 <root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
 </x:root>



En Linq To XML :

Code :
  1. XElement xml = new XElement("root", new XAttribute(XNamespace.Xmlns + "x", "urn:1" ),
  2.                 new XElement("item" ),
  3.                 new XElement("item" ));


c'est quand même largement plus buvable que le code "ancienne version" non ? [:dawa]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-08-2009 à 16:50:31    

Ton code semble effectivement plus simple mais, je repose ma question, que veut dire: "root", "x", "urn:1" et "item" ? De plus, ton code, je le met avec le reste du code VB.NET ? car ça me semble assez différent du code VB.NET

Reply

Marsh Posté le 25-08-2009 à 16:55:49    

Orla a écrit :

Ton code semble effectivement plus simple mais, je repose ma question, que veut dire: "root", "x", "urn:1" et "item" ? De plus, ton code, je le met avec le reste du code VB.NET ? car ça me semble assez différent du code VB.NET


root : le nom de la balise
x : l'espace de noms utilisé (namespace)
urn:1 : le nom du namespace
item : le nom de la balise
 
ce sont des notions de base ça... si tu ne connais pas ça, renseigne toi sur le format XML, sinon tu n'arriveras à rien au niveau du parsing
quant à mon code, il est en C#, mais il est adaptable en VB très facilement (cf MSDN, lien donné dans le post précédent)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-08-2009 à 16:59:18    

Bien, merci à vous tous, je pense avoir ce qu'il faut. Je vais me renseigner sur le format XML et je pense que tous ira bien après. Encore merci à vous tous pour votre aide.
 
Cordialement,
 
Orla

Reply

Marsh Posté le 25-08-2009 à 18:05:29    

@ Harkonnen : Je vois pas en quoi j'ai failed vu que ma technique marche :o
 
Plus sérieusement merci je connaissait pas, je regarderais quand j'aurais le temps.
 
Sinon Orla tu peut aussi l'écrire à la main comme je le faisait dans le temps :
 

Citation :


...
sw.WriteLine(String.Format("<{0}>{1}</{0}>", taBalise, tonContenu));
...


xD
 
Bon ok je ->[]

Message cité 1 fois
Message édité par Kormyr le 25-08-2009 à 18:06:24
Reply

Marsh Posté le 25-08-2009 à 18:09:06    

Kormyr a écrit :

@ Harkonnen : Je vois pas en quoi j'ai failed vu que ma technique marche :o


ok, la prochaine fois que j'irais aux states, je prendrais le bateau au lieu de prendre l'avion [:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-08-2009 à 18:11:28    

Harkonnen a écrit :


ok, la prochaine fois que j'irais aux states, je prendrais le bateau au lieu de prendre l'avion [:petrus75]


 
[HS]Au moins si tu tombes en panne, c'est moins risqué.[/HS]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed