OVH Cloud OVH Cloud

[xml] conseil ?

5 réponses
Avatar
Thomas
Bonjour


j'essaye de me faire la main sur java, en réalisant un petit jeu de démineur


je voudrais pouvoir sauvegarder les parties

j'ai comme données à garder : un temps, un score, une série de coups (objet
Dimension) une dimension de grille, et des points sur la grille (où sont
les mines)


pensez vous qu'un fichier en xml serait intéressant ?

voyez vous d'autres moyens de faire ?

quel api me conseillez vous pour xml, pour ce genre d'utilisation ? (pas
trop compliqué please, je débute)

5 réponses

Avatar
Pif
Bonjour


j'essaye de me faire la main sur java, en réalisant un petit jeu de démineur


je voudrais pouvoir sauvegarder les parties

j'ai comme données à garder : un temps, un score, une série de coups (objet
Dimension) une dimension de grille, et des points sur la grille (où sont
les mines)


pensez vous qu'un fichier en xml serait intéressant ?

voyez vous d'autres moyens de faire ?

quel api me conseillez vous pour xml, pour ce genre d'utilisation ? (pas
trop compliqué please, je débute)
sérialisation ... mais c'est pas lisible en mode texte, c'est plus du

binaire...

Avatar
Vincent Lascaux
je voudrais pouvoir sauvegarder les parties


sérialisation ... mais c'est pas lisible en mode texte, c'est plus du
binaire...


Et ca a le gros désavantage de ne pas marché avec une autre version du
logiciel dans laquelle on a changé un peu le code (du moins les membres de
la classe qu'on sérialise).

--
Vincent


Avatar
Stéphane Toussaint
Bonjour,


pensez vous qu'un fichier en xml serait intéressant ?


La réponse est oui.

En plus cela te permettra de faire une sauvegarde tour par tour.
Cela te permettra par la suite d'analyser ta partie, revenir en arrière
etc... (très utilisé pour d'autres jeu : Echecs, Go, etc...)

quel api me conseillez vous pour xml, pour ce genre d'utilisation ? (pas
trop compliqué please, je débute)


Perso j'utilise dom4j depuis que je me suis mis à XML en JAVA (2 ans).
Simple et robuste, j'en suis très content.

Pour ton fichier XML en lui même il pourrait avoir cette tête là :

<game id="">
<metas>
<score></score>
<time></time>
</metas>
<mines>
<mine>
<x></x>
<y></y>
</mine>
...
</mines>
<rounds>
<round num="1">
<x></x>
<y></y>
<action></action>
</round>
<round num="2">
<x></x>
<y></y>
<action></action>
</round>
</rounds>
</game>

Voilà c'est juste un petit jet par rapport à ce que tu demandes... tu
peux t'en inspirer ou l'oublier ;-)

Steph

Avatar
Jeremy
quel api me conseillez vous pour xml, pour ce genre d'utilisation ? (pas
trop compliqué please, je débute)


Digester ca peut etre pas mal pour debuter avec le XML en Java. C'est base sur
Sax.

++
--
Jeremy Diamand
EPITA Promo 2006

Avatar
Alain
en fait tous les API (SAX,DOM,JDOM) ont leurs raison d'être spécifique.

SAX est évènementiel et c'est adapté pour de gros fichiers, c'est pas
tropp compliqué de produire un document si tu génère dans son ordre
naturel un peu comme on imprime un rapport avec des print...

pour l'analyse sax est très efficace coté performance mais effroyable à
coder car il faut savoir ou tu en est dans le décodage...

Digest semble bien pratique car il te permet de te mettre a l'écoute sur
un chemin d'imbrication d'élément XML (ca resemble au xpath de XSL)

DOM est en mémoire et propose des méthode de recherche assez pointues,
et permet aussi de construire ou modifier des documents en mémoire...

c'est bien si tu construit ton document dans le désordre ou que tu le
bidouille, l'assemble,... c'est bien aussi si tu l'analyse pour y
trouver des noeuds un peu partout...

JDOM ressemble pas mal a DOM mais en plus simple.
c'est plus facile de construire un document en assemblant des objets.
pour la recherche il est moins puissants mais marche bien si tu sais ou
tout doit se trouver.

mais en fait l'analyse et la bidouille des documents XML ca devrait se
faire plutot en XSL, sauf quand le document est monstrueux (et encore si
on code bien la XSL ca consomme pas de mémoire)


déjà essaye d'utiliser l'API javax.transform et notamment les "Source"
et "Result" le "identity transformer" (ca change rien)qui permet de lire
un flux, et de l'écrire dans un autre truc...
par exemple lire un fichier et écrire un DOM, (StreamSource et DOMResult)
puis

moi pour que tu comprenne XML, paradoxalement je te conseillerais de
jouer avec XSL en t'ammusant a transformer un fichier en un autre...

après seulement on travaille à générer des flux, et à les lire...

je te propose un exercisse suivant :
1- avec l'identity transformeur copie un fichier XML dans un autre via
une StreamSource et un StreamResult
2- modifie ce programme pour utiliser une feuille XSL et extraire 2 ou 3
informations utiles (un titre, un total...) et produire un fichier
résultat avec ces info dans quelques éléments simples...
3-écrit dans un objet JDOM et essaye d'en lire le contenu
4-écrit un XMLReader SAX (ou DIGEST) pourq qu'il recoive ces éléments et
les lise..
5- trouve ces même éléments avec DOM
6- au lieu de charger un fichier XML, construit un document en JDOM et
donne le a manger a tes programmes de tests précédents
7- construit un document XML en SAX et donne le a mangeer


en fait ce que je te dis peut sembler bizarre mais c'est ce qu'on fait
dans une applis ou XMl est important ...

voici des exemple de tâches dans une appli qui fait plaine de XML

on charge 50Mo de donnée XML,
on parse le tout avec SAX (en DOM ca fumerait) mais on récupère des
objets un par un, on construit des élément JDOM plus petits un à la fois ,
on change de format (le format d'entree est une DTD publique)avec XSL et
on les donne à manger a un programme d'importation (qui utilise une DTD
technique secrete) qui désosse le JDOM.

dans un autre on a un XMLReader SAX qui produit un flux SAX selon une
DTD interne a partir de données de la base, ca passe a travers un filtre
XSL pour respecter un format normaliser, et on écrit dans la base pour
publication web...

dans un autre morceau de l'appli,
on lis des documents en JDOM, on y détecte des élément référencant
d'autres éléments et on les greffe à la place de la référence (une sorte
de include), puis on transforme le tout dans un autre format et on le
met dans la base...

dans un autre on construit un document JDOM en récupérant un document
dans la base (ceux d'avant), et on ajoute sous forme d'élément XML des
données extraites de la base avec des requêtes relationelles, et on
balance le tout à un servlet qui applique une feuille de style pour
produire de l'HTML

dans un autre on construit un document JDOM avec quelques données
de la base, et on applique une feuille de style pour produire du texte
tabulé que l'on envoie en piece jointe mail comme données pour tableur...

dans un autre on réutilise le générateur un flux qui habituellement est
redirigé vers une feuille XSL qui convertit en HTML, mais on redirige
plutot vers une feuille de style qui produit un flux XML normalisé pour
des robots partenaires...

bref c'est de la cuisine...







quel api me conseillez vous pour xml, pour ce genre d'utilisation ? (pas
trop compliqué please, je débute)



Digester ca peut etre pas mal pour debuter avec le XML en Java. C'est base sur
Sax.

++