Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1969 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [XML] stocker les preferences de mon appli

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML] stocker les preferences de mon appli

n°612410
spitagor
Posté le 15-01-2004 à 12:18:27  profilanswer
 

Bonjour
 
Je suis débutant en XML.  
 
J'ai une appli java qui necessite des preferences que je souhaiterait stocker dans un fichier XML : prefs.xml pour ne pas le citer.
 
 
En clair quand je vais dans le menu "preferences" ben ca met a jour mon fichier XML
 
Sachant que je n'aurais que 3 ou 4 parametre a gerer (style un booleen, un chemin de fichier...), croyez vous que XML soit bien adpaté pour mon cas ou vaut il mieux faire ca a la methode "classique" (une classe Préferences avec des attributs comme support de stockage) ?
 
 
Merci :)  
 
 
 

mood
Publicité
Posté le 15-01-2004 à 12:18:27  profilanswer
 

n°612443
benou
Posté le 15-01-2004 à 12:59:32  profilanswer
 

Pour ce genre de besoin, utilise la classe Properties  ...
 
Si tu veux faire ca en XML, y a pas de problème, mais bon, l'intérêt est pas énorme a part que c'est plus facilement évolutif.
 
y a une classe Preference en jdk1.4 aussi je crois ... mais je connais pas trop


---------------
ma vie, mon oeuvre - HomePlayer
n°612463
spitagor
Posté le 15-01-2004 à 13:16:52  profilanswer
 

cool je connaissais pas ca...
 
 
merci bcp ! je vais voir ca de ce pas !

n°612465
nraynaud
lol
Posté le 15-01-2004 à 13:18:52  profilanswer
 

benou a écrit :


y a une classe Preference en jdk1.4 aussi je crois ... mais je connais pas trop

Elle est mieux (pour faire ça).
Il y a un système pour livrer des configuration "en boite de conserve" avec l'application, et c'est du XML.
http://java.sun.com/j2se/1.4.2/doc [...] ences.html
 
si vraiment un poil de doc en plus est nécessaire, la doc du JSR :
http://www.jcp.org/aboutJava/commu [...] st/jsr010/
 
en particulier "Usage Notes"


---------------
trainoo.com, c'est fini
n°612477
spitagor
Posté le 15-01-2004 à 13:30:00  profilanswer
 

merci pour usage notes, je crois que je vais 'en inspirer !


Message édité par spitagor le 15-01-2004 à 13:30:21
n°612482
El_gringo
Posté le 15-01-2004 à 13:34:08  profilanswer
 

Ouais, enfin, si t'as 4 petits paramètres à stocker, c'est peut être plus simple d'utiliser un bête fichier properties et la classe Properties, tu crois pas ?


---------------
Les Vers Solitaires, on aime ... ou pas !
n°612496
nraynaud
lol
Posté le 15-01-2004 à 13:42:28  profilanswer
 

el_gringo a écrit :

Ouais, enfin, si t'as 4 petits paramètres à stocker, c'est peut être plus simple d'utiliser un bête fichier properties et la classe Properties, tu crois pas ?

non, justement, c'est ça la feinte : Properties c'est pour les trucs plus compliqués.

Citation :

How does this API relate to Properties?
 
It is intended to replace most common uses of Properties, rectifying many of its deficiencies, while retaining its light weight. When using Properties, the programmer must explicitly specify a pathname for each properties file, but there is no standard location or naming convention. Properties files are "brittle", as they are hand-editable but easily corrupted by careless editing. Support for non-string data types in properties is non-existent. Properties cannot easily be used with a persistence mechanism other than the file system. In sum, the Properties facility does not scale.


 
je te renvoie vers http://www.jcp.org/aboutJava/commu [...] usage.html
 
pour bien voir que c'est vraiment bidon comme truc.


---------------
trainoo.com, c'est fini
n°612547
El_gringo
Posté le 15-01-2004 à 14:23:22  profilanswer
 

Ouais, enfin, a ce que j'ai compris, c'est plus "encadré" que la classes Properties. Mais vu la simplicité d'usage, c'est vrai qu'il vaut surement mieux utiliser cette classe "Preferences".
Et, quand on fait un export des Preférences (exportTree ou qqch comme ça), elles sont formtées comment les données ?


---------------
Les Vers Solitaires, on aime ... ou pas !
n°612573
H4dd3R
Q2
Posté le 15-01-2004 à 14:53:22  profilanswer
 

Ya un truc super pour l'xml en java: jdom.. :love:


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°612612
yo c spi
Yo !
Posté le 15-01-2004 à 15:09:44  profilanswer
 

h4dd3r a écrit :

Ya un truc super pour l'xml en java: jdom.. :love:


Y'a SAX aussi : SAX = DOM simplifié mais moins puissant

mood
Publicité
Posté le 15-01-2004 à 15:09:44  profilanswer
 

n°612640
nraynaud
lol
Posté le 15-01-2004 à 15:19:26  profilanswer
 

el_gringo a écrit :

Et, quand on fait un export des Preférences (exportTree ou qqch comme ça), elles sont formtées comment les données ?


Code :
  1. The XML document has the following DOCTYPE declaration:
  2. <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
  3. Note that the system URI (http://java.sun.com/dtd/preferences.dtd) is not accessed when exporting or importing prefereneces; it merely serves as a string to uniquely identify the DTD, which is:
  4.     <?xml version="1.0" encoding="UTF-8"?>
  5.     <!-- DTD for a Preferences tree. -->
  6.     <!-- The preferences element is at the root of an XML document
  7.          representing a Preferences tree. -->
  8.     <!ELEMENT preferences (root)>
  9.  
  10.     <!-- The preferences element contains an optional version attribute,
  11.           which specifies version of DTD. -->
  12.     <!ATTLIST preferences EXTERNAL_XML_VERSION CDATA "0.0" > 
  13.     <!-- The root element has a map representing the root's preferences
  14.          (if any), and one node for each child of the root (if any). -->
  15.     <!ELEMENT root (map, node*) >
  16.     <!-- Additionally, the root contains a type attribute, which
  17.          specifies whether it's the system or user root. -->
  18.     <!ATTLIST root
  19.               type (system|user) #REQUIRED >
  20.     <!-- Each node has a map representing its preferences (if any),
  21.          and one node for each child (if any). -->
  22.     <!ELEMENT node (map, node*) >
  23.     <!-- Additionally, each node has a name attribute -->
  24.     <!ATTLIST node
  25.               name CDATA #REQUIRED >
  26.     <!-- A map represents the preferences stored at a node (if any). -->
  27.     <!ELEMENT map (entry*) >
  28.     <!-- An entry represents a single preference, which is simply
  29.           a key-value pair. -->
  30.     <!ELEMENT entry EMPTY >
  31.     <!ATTLIST entry
  32.               key   CDATA #REQUIRED
  33.               value CDATA #REQUIRED >

http://java.sun.com/j2se/1.4.2/doc [...] ences.html
 
ça serait bien de lire les docs que je poste. Surtout que là c'est sur un sujet ridiculement minimaliste.


---------------
trainoo.com, c'est fini
n°612646
El_gringo
Posté le 15-01-2004 à 15:21:39  profilanswer
 

yo c spi a écrit :


Y'a SAX aussi : SAX = DOM simplifié mais moins puissant


 
C'est pas simplifié, c'est une couche en dessous que DOM. Du coup c'est plus performant, et permet de faire de l'évènementiel (permet de ne lire qu'une partie du document : alors que le mode DOM oblige à lire l'intégralité du document pour construire l'arborescence).
Mais là on s'écarte du sujet.
Le gars qui à posté la question de base à 4 propriétés à gérer. Il va pas faire du SAX pour ça !!!


---------------
Les Vers Solitaires, on aime ... ou pas !
n°612780
benou
Posté le 15-01-2004 à 17:41:53  profilanswer
 

yo c spi a écrit :


Y'a SAX aussi : SAX = DOM simplifié mais moins puissant


[:kiki]
 
faut arrêter de dire n'importe quoi, hein !


---------------
ma vie, mon oeuvre - HomePlayer
n°613109
spitagor
Posté le 15-01-2004 à 23:16:36  profilanswer
 

VOus inquietez pas j'aurais d'autres questions qui vont venir tres vite sur Java et XML : je dois créer des albums de documents (en clair des fichiers qui ont la meme extension) , pour chaque document on peut avoir une ou plusieurs "propriétés" qui ont une valeur . Le tout est configurable par GUI que je suis en train de construire avec Swing !  
 
Je pense que l'utilisation se XML sera alors pleinement justifiée ! :D
 
Je prepare mes questions car je sens qu'il va y en avoir !
 :)


Message édité par spitagor le 15-01-2004 à 23:16:59
n°613159
gilou
Modérateur
Modzilla
Posté le 16-01-2004 à 00:37:47  profilanswer
 

el_gringo a écrit :


 
C'est pas simplifié, c'est une couche en dessous que DOM. Du coup c'est plus performant, et permet de faire de l'évènementiel (permet de ne lire qu'une partie du document : alors que le mode DOM oblige à lire l'intégralité du document pour construire l'arborescence).
Mais là on s'écarte du sujet.
Le gars qui à posté la question de base à 4 propriétés à gérer. Il va pas faire du SAX pour ça !!!


 
DOM est plutot une approche top-down et SAX une approche bottom-up au parsing d'un fichier XML.
DOM construit un arbre a partir du document XML ==> il faut lire tout le document pour construire l'arbre et de plus cet arbre consomme de la place memoire.
SAX envoie des evenements de parsing au fur et a mesure de la lecture du document ==> peu de consommation memoire, ...
On peut construire un arbre DOM a partir des informations SAX (quoique, elles sont peut etre insuffisantes a la base), mais ce n'est nullement une obligation. On peut avoir des parsers DOM n'ayant rien a voir avec SAX.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°613196
El_gringo
Posté le 16-01-2004 à 08:46:47  profilanswer
 

Merci pour la petite précision.
A+


---------------
Les Vers Solitaires, on aime ... ou pas !
n°613500
the real m​oins moins
Posté le 16-01-2004 à 14:15:57  profilanswer
 

y'a XPP aussi [:zebra33]
 
 
[c'était mon moment j'étale ma culture à la manière de la confiture, merci à tous d'avoir suivi]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°613507
El_gringo
Posté le 16-01-2004 à 14:22:42  profilanswer
 

the real moins moins a écrit :

y'a XPP aussi [:zebra33]
 
 
[c'était mon moment j'étale ma culture à la manière de la confiture, merci à tous d'avoir suivi]


 
Certains disent que la culture, c'est comme la confiture :
moins on en a, plus on l'étale ! :whistle:


---------------
Les Vers Solitaires, on aime ... ou pas !
n°613509
the real m​oins moins
Posté le 16-01-2004 à 14:23:51  profilanswer
 

c'est exactement ce que je voulais dire, y'avait'il vraiment besoin de l'expliquer?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°613512
El_gringo
Posté le 16-01-2004 à 14:24:46  profilanswer
 

the real moins moins a écrit :

c'est exactement ce que je voulais dire, y'avait'il vraiment besoin de l'expliquer?


 
Au moins là, c'est clair !


---------------
Les Vers Solitaires, on aime ... ou pas !
n°613513
the real m​oins moins
Posté le 16-01-2004 à 14:25:35  profilanswer
 

je vois pas où ça aurait pu ne pas l'être.
 
 
 
 
 
et puis n'insiste pas trop, tu as déjà appris quelquechose, l'existence de l'XPP, c'est déjà ça non?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°613532
El_gringo
Posté le 16-01-2004 à 14:45:32  profilanswer
 

the real moins moins a écrit :

je vois pas où ça aurait pu ne pas l'être.
 
et puis n'insiste pas trop, tu as déjà appris quelquechose, l'existence de l'XPP, c'est déjà ça non?


 
Ben, juste le nom, comme ça, on s'en fout un peu. Tant qu'a faire, si tu places le nom, une petite expliquation de ce dont il s'agit ne serait pas mal venue.
Ne serait-ce que pour montrer que en sais + sur la chose que sa simple dénomination ! :D


---------------
Les Vers Solitaires, on aime ... ou pas !
n°613537
the real m​oins moins
Posté le 16-01-2004 à 14:51:33  profilanswer
 

ben oui mais non, confiture, tout ça.
je sais juste que c'est une autre api que SAX et DOM pour parser de  l'xml et potentiellement très performante.
google >> XPP3


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°613551
H4dd3R
Q2
Posté le 16-01-2004 à 15:09:18  profilanswer
 

el_gringo a écrit :


Ne serait-ce que pour montrer que en sais + sur la chose que sa simple dénomination ! :D


Non non il peut pas préciser plus: la culture c juste superficiel!! ;)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°614371
spitagor
Posté le 17-01-2004 à 14:36:03  profilanswer
 

je reviens quelque peu sur le sujet initial.
 
ya un truc que je comprends pas je me suis a peu pres calqué sur la doc :
 
j'ai ma classe Prefs

Code :
  1. public class Prefs  {
  2.  
  3.  
  4.       private static final String copieFichiers = "copie";
  5.       private static final String dossierRacine = "dossier_racine";
  6.       private static Preferences p = Preferences.userNodeForPackage(Prefs.class);
  7.  
  8.    public static Preferences getPreferences()
  9.      
  10.       {
  11.      
  12.                  return p;
  13.       }
  14.        public static String getCopieStr()
  15.      
  16.       {
  17.       System.out.println("str"+copieFichiers);
  18.                  return copieFichiers;
  19.                
  20.       }
  21.  
  22.        public static String getRepRacineStr()
  23.      
  24.       {
  25.        System.out.println("str"+dossierRacine);
  26.                  return dossierRacine;
  27.              
  28.       }
  29.  
  30.        public static boolean getCopieVal()
  31.      
  32.       {
  33.      
  34.          boolean copie = p.getBoolean(copieFichiers, false);
  35.                     System.out.println("val"+copie);
  36.          return copie;
  37.       }
  38.  
  39.        public static String getRepRacineVal()//pour la sauvegarde des parametres
  40.      
  41.       {
  42.          String repRacine = p.get(dossierRacine,"C:\\test\\" );
  43.                       System.out.println("val "+repRacine);
  44.          return repRacine;
  45.       }
  46.  
  47.  
  48.  
  49.  
  50.    }


et ensuite je l'utilise comme ceci (dans une fenetre)

Code :
  1. private void bt_okActionPerformed(ActionEvent evt) {
  2.      
  3.       // mise a jour des preferences
  4.          try
  5.          {
  6.             Prefs.getPreferences().putBoolean(Prefs.getCopieStr(),this.radio_copie.isSelected());
  7.             Prefs.getPreferences().put(Prefs.getCopieStr(),this.chemindossracine.toString());
  8.          }
  9.              catch(NullPointerException e)
  10.            
  11.             {
  12.                System.out.println("nullpointerput" );
  13.             }
  14.          setVisible(false);
  15.          dispose();
  16.       //la on verifie que ca a bien mis a jours les parametres... et ben ca marche pas!!!
  17.          System.out.println("copie des fichiers : "+Prefs.getCopieVal());
  18.          System.out.println("dossier racine : "+Prefs.getRepRacineVal());


 
 
 
et ca marche pas les parametre restent a leurs valeurs par defaut :
 
trace  
 

Code :
  1. strcopie
  2. strcopie
  3. valfalse
  4. copie des fichiers : false
  5. val C:\test\
  6. dossier racine : C:\test\


 
J'ai du pas faire un truc que j'aurais du ou alors ya ue erreur conne...j'ai un peu peur des static aussi...

n°614490
spitagor
Posté le 17-01-2004 à 19:06:33  profilanswer
 

c bon g trouvé
 
pour info pour recuperer le contenu d'un JTextField il faut faire getText et non pas toString()
 
 
je sus un boulet et j'assume
 

n°617308
spitagor
Posté le 21-01-2004 à 01:00:08  profilanswer
 

Je viens de m'apercevoir que l'on ne peut stocker ques des strings dans la classe Preferences. :(  
 
Ca doit etre du au format d'exportation (XML) mais comment faire pour detourner cette difficulté ? Moi qui voulait mettre une Hashmap j'aurais mieux fait d'utiliser la classe Properties... :cry:  nraynaud un avis? :whistle:


Message édité par spitagor le 21-01-2004 à 01:00:45
n°617397
nraynaud
lol
Posté le 21-01-2004 à 08:54:28  profilanswer
 

spitagor a écrit :

Je viens de m'apercevoir que l'on ne peut stocker ques des strings dans la classe Preferences. :(  
 
Ca doit etre du au format d'exportation (XML) mais comment faire pour detourner cette difficulté ? Moi qui voulait mettre une Hashmap j'aurais mieux fait d'utiliser la classe Properties... :cry:  nraynaud un avis? :whistle:  

Il aurait fallu lire la Faq, c'était marqué dedans qu'on ne pouvait mettre que des types primitifs et des strings.
 
Ben soit tu passes au calibre d'au-dessus, soit tu fais le dump de ton hashMap à la main.


---------------
trainoo.com, c'est fini
n°618383
spitagor
Posté le 21-01-2004 à 21:02:27  profilanswer
 

heu... il me semble avoir lu dans la doc si j'ai bien compris qu'il n'etait pas conseillé avec la classe Properties, d'utiliser autre chose que des Strings...  
 
pour le dump du Hashmap a la main , je suppose que tu veux dire d'entrer les valeurs a la main... ok mais dans ce cas la ou le stocker? par exemple si j'ai un tableau des extensions connues que je remplis a la main, je dois pouvoir le sauvegarder d'un maniere ou d'un autre (fichier ...) de marniere a ce que je n'ai pas a le recreeer(lourd) a chaque lancement de l'apllication. Bon ca c'est faisable .
 
Le probleme c'est que je dois stocker une association (Hashmap) : j'associe une String a une ArrayList d'extensions.
Et comme je peux le mettre ni dans properties ni dans preferences, je le mets ou? dans une class statique?
 
 
De plus pour ce cas, ca serait pas mal un fichier XML a priori :whistle:  
 
Je sais j'ai beaucoup de question mais apres avoir lu la doc, j'ai du mal a choisir une solution. :??:  
 
Sinon... qu'entends tu par "passer un Calibre au dessus?"  :jap:  
 

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [XML] stocker les preferences de mon appli

 

Sujets relatifs
[Projet fou] Faire une appli de conf audio P2P[XML/XSL]génération d'un XML a partir d'un XML par XSL probleme
[action-script / XML] texte dynamique dans flash, parceur XML et pos[windows 2000 server] gerer les DNS avec une appli ASP
[VB] - methode popupmenu -> appli qui se ferme pas. PQ?VBA : commande saveas d'un doc word depuis une appli access
Probleme de parse de XML JasperReportXML : question sur la structure d'un fichier
[PHP-XML] erreur sous ie ! [RESOL][XML] XML ou non
Plus de sujets relatifs à : [XML] stocker les preferences de mon appli


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR