Forum du clan Vioc

Clan [Vioc] - Geriatric Gaming Club since A.D. MMIII - [Vioc] Parkinson nous fait cliquer plus vite, Alzheimer nous fait oublier le résultat.
It is currently 24 Aug 2025 6:11

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 10 posts ] 
Author Message
 Post subject: Brutas en XML ?
PostPosted: 18 Sep 2008 12:18 
Offline
Floodeur schizophrene
User avatar

Joined: 21 Oct 2004 23:08
Posts: 1566
Bonjour,
on attaque maintenant le format XML.

Je voudrais savoir s'il est possible de faire gérer un un fichier XML ue colonne IDENTITE ( un compteur quoi ) qui s'incrémente tout seul comme un grand.

Exemple :
Code:
<Elements>
<Element>
<ID>1</ID>
<Nom>DUVENT</Nom>
<Prenom>Yvan</Prenom>
</Element>
<Element>
<ID>2</ID>
<Nom>Ragetournejbraque</Nom>
<Prenom>Sylvie</Prenom>
</Element>
  etc....
</Elements>


Ici la colonne ID serait une collonne qui s'incrémente toutes seule comme une grande , comme dans un BDD avec un champ compteur.
J'ai pas vraiement trouver d'exemple précis la dessus, donc j'aurai tendance a dire que c'est pas possible ( avec les fichiers DTD et de Schema associé )


A l'heure acuel je pars sur une solution gere ca moi meme en stockant une valeur que j'incrémente tout connement et que je vais chercher avant d'enregistrer mon fichier XML. A ce niveau la le truc c'est que j'aimerai stocker la valeur dans le fichier XML lui meme et pas dans un fichier a part.
Mais dans ce cas , comment recupere la valeur et l'enregistrer ensuite sachant q'ui l faut plutot que cela soit sous forme d'un attribut du noeud racine. ( le tout en Dotnet bien sur :p )
Code:
<Elements IndiceMax="2">
<Element>
<ID>1</ID>
<Nom>DUVENT</Nom>
<Prenom>Yvan</Prenom>
</Element>
<Element>
<ID>2</ID>
<Nom>Ragetournejbraque</Nom>
<Prenom>Sylvie</Prenom>
</Element>
  etc....
</Elements>


et le code qui me permet de stocker ca dans un dataset

Code:
Dim ds_Menu as DataSet=new DataSet()
ds_Menu.ReadXml(BASE_MENU)
dg_listemenu.DataSource=ds_Menu
dg_listemenu.DataBind()


me permet par de recupere l'attribut "IndiceMax"


une idée ?

_________________
Pas de bras ! Pas de chocolat !


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 18 Sep 2008 12:52 
Offline
Old Of Warcraft
User avatar

Joined: 09 Oct 2003 10:20
Posts: 5374
Location: Grenoble
Je n'arrive pas a comprendre ta difficulte ??

<ID> est une valeur comme les autres.
Tu le fais traiter dans ton parseur comme tu traites les autres.

Edit : ah, oui , je pense que je viens de comprendre : tu veux mettre la valeur nombre(id) dans un element, c'est ca ?

C'est vraiment caca boudin de vouloir mettre le resultat du traitement d'un fichier xml dans ce fichier lui-meme. ;)
Pourquoi tu ne veux pas utiliser une fonction du style nombre-d-elements(fichier xml), (ou get_max((all id)) si tu supprimes des elements) : pour des raison de perf ?

_________________
la meilleure signature du fofo, et de loin !


Top
 Profile E-mail  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 18 Sep 2008 13:09 
Offline
Floodeur schizophrene
User avatar

Joined: 21 Oct 2004 23:08
Posts: 1566
l'element ID est un nombre .. qui ne doit jamais avoir existé auparavent, sachant que les elementq peuvent etre effacer ...
je dois bien garder une trace de ou j'en suis dans l'incrément.

chaque nouvelle ajout doit incrémenté le nombre à partir de là ou il en etait, pas en fonction de l'element max

si j'en suis en ID=2 // le prochain ajout doit generer un ID=3 .. si j'efface ensuite l'element ID=3 ... le prochain rajout doit génré un ID=4 , meme si le 3 existe plus

_________________
Pas de bras ! Pas de chocolat !


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 18 Sep 2008 13:11 
Offline
Floodeur schizophrene
User avatar

Joined: 21 Oct 2004 23:08
Posts: 1566
en gros je veux le mme comportement qu'un champ compteur a qui on a coller une clé unique dans une Base de données de n'importe quel type.

une fois un entré faite dans un table .. le numéro de ligne ne sera jamais repris , meme si elle a été effacée.

_________________
Pas de bras ! Pas de chocolat !


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 18 Sep 2008 14:04 
Offline
Old Of Warcraft
User avatar

Joined: 09 Oct 2003 10:20
Posts: 5374
Location: Grenoble
Oui, je vois mieux.
Pas evident avec du xml (comme je disais, contrairement a une base, c'est pas fait pour contenir des resultats de traitements, ici l'AUTOINCREMENT)
Y aurait la methode bourrine de creer un noeud ID_MAX dans TOUS les elements. Mais tu devrais le mettre a jour pour tous les elements a chaque ajout/suppression.

Sinon, google donne pas mal de sites avec "c# autoincrement in xml file", comme celui-la :
http://www.topxml.com/code/cod-431_9686 ... eader.aspx

Mais a priori , bcp implemente l'autoincrement avec max()
http://blogs.msdn.com/kaevans/archive/2 ... /4423.aspx

Est-ce "grave" si tu perds l'info que les derniers elements ont ete effaces (maxid qui diminue) . Ca te simplifierait quand-meme le bouzin.

_________________
la meilleure signature du fofo, et de loin !


Top
 Profile E-mail  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 19 Sep 2008 10:28 
Offline
Floodeur schizophrene
User avatar

Joined: 10 Mar 2007 15:02
Posts: 4507
Location: au pays des winners
J'ai cru voir que tu gérais un dataset à l'arrivée. Dans un dataset tu as des possibilités d'update, delete, insert automatique. En gros, quand tu as fini ton traitement, tu fais ton ".update" et il va updater tout seul ton fichier XML.

Sinon tu peux coller un javascript dans un fichier XSL basé sur ton fichier XML et là ça le fera tout seul. Enfin je pense. Moi je suis plutot spécialiste du Xpath. Je suis nul en XSL.

_________________
Everything is clearer now. Life is just a dream you know.
That's never ending, I'm ascending


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 20 Sep 2008 13:35 
Offline
Floodeur schizophrene
User avatar

Joined: 21 Oct 2004 23:08
Posts: 1566
Pour l'histoire du numéro auto , j'ai trouvé la solution :
en typant le DataSet, je peux creer tous les champs, un peu comme avec un base de données, dont les champs en incrément auto.

Il ne reste plus qu'a stocker le schema avec la fonction WriteXmlSchema() de l'objet DataSet .. et le tour est joué .. en relisant le schema avant de lire mes fichiers XML enregistrer , je recupere bien ce que je veux veux à la fin ... une presque base de données sous forme de fichier XML.

Par contre ... Steph a l'air de dire qu'il existe des fonctions update() et tout ca avec le dataset , mais visblement c'est pas du tout le cas .... pour enregistrer mon Fichier XML j'ai une methode disponible avec un objet DataSet : WriteXml.
Le truc c'est que ca enregistre TOUT le fichier. Et pas simplement une partie. Et visiblement c'est forcement comme ca que cela se passe. Moi j'aurai effectivement préférer ne mettre a jour que ce que j'avais besoin .... il semble que cela ne soit pas possible .... L'intégralité du fichier sera réecrit ... tant qu'il y a pas trop de données dans le fichier ca peut le faire. Mais a partir d'un certain point .. faut oublié la methode fichier XML et se servir d'une Vrai BDD.

Tu confirmera si tu as le temps Steph ... mais visblement il n'y a pas de moyen de faire en sorte que seul les modifications ou ajouts soient récris quand on sauve le DataSet dans un fichier XML.
Les fonctions Getchanges() ou Merge ne me sont la d'aucune utilité je pense... des que j'ecris le fichier .. je dois bien écrire TOUT le fichier.

_________________
Pas de bras ! Pas de chocolat !


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 22 Sep 2008 9:44 
Offline
Floodeur schizophrene
User avatar

Joined: 10 Mar 2007 15:02
Posts: 4507
Location: au pays des winners
J'avoue que le update du dataset, je ne l'ai testé que dans une BDD, jamais dans un XML. Je pensais qu'avec un objectdatasource ou un xmldatasource ça fonctionnait de la même manière mais je peux me tromper.

Comment relis-tu ton fichier XML à ton dataset ? Par un datatableadapter ? C'est peut-être pour ça que tu ne peux pas te contenter de faire un update. Cela dit, je n'ai testé le datatableadapter que sur des BDD. Je ne sais pas si tu peux charger ton dataset directement depuis le XML par cet objet (mais si tu peux, c'est clair que c'est mieux).

_________________
Everything is clearer now. Life is just a dream you know.
That's never ending, I'm ascending


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 22 Sep 2008 14:24 
Offline
Floodeur schizophrene
User avatar

Joined: 21 Oct 2004 23:08
Posts: 1566
un Objet DataSet ne contient clairement pas de Methode Update ou autre dans le meme genre. On peut bien sur modifier son contenu.

Tous les exemples que je trouve pour charger un DataSet partent effectivement d'une base de données .. et donc il passe bien par un objet DataAdapter. Objet que je n'ai donc pas encore edudié qui sert visiblement a faire la liaison entre la source BDD et le dataset.

Pour charger un DataSet depuis un fichier XML, rien de plus simple , l'objet DataSet a une Methode .ReadXml(lenomdufichier) avec la possibilité de lire son schema .ReadXmlSchema(lenomdufichierschema)
Pas de DataAdapter ici.

La ou je peux me tromper, c'est qu'un objet DataAdapter ira chercher la source dans une bdd ( SQLAdapter par exemple) mais pas dans un fichier XML.
Dans TOUS les exemples que je trouve, quand ils mettent a jour des données, ils envoient directement des requetes SQL pour mettre a jour les données ( UPDATE Table SET champ='tata' WHERE etc ... ) donc s'adresse a une BDD ( tres certainement via le DataAdapter ?? ) mais jamais à un document XML ( ou la methode WriteXML() de l'objet DataSet est direcment utilisé)

j'ai bien trouver une référence a un objet XMLAdapter ... mais visiblement ca a un rapport avec Visual Fox Pro .. et ca osef quoi :)

_________________
Pas de bras ! Pas de chocolat !


Top
 Profile  
 
 Post subject: Re: Brutas en XML ?
PostPosted: 22 Sep 2008 17:17 
Offline
Floodeur schizophrene
User avatar

Joined: 10 Mar 2007 15:02
Posts: 4507
Location: au pays des winners
La méthode n'est pas sur le dataset mais sur le dataadapter. Voilà pourquoi tu ne la trouve pas.

_________________
Everything is clearer now. Life is just a dream you know.
That's never ending, I'm ascending


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 10 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group