TREEXML

cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 - 11 avril 2005 à 21:28
cs_ip2x Messages postés 63 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 27 janvier 2009 - 14 mai 2007 à 20:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30683-treexml

cs_ip2x Messages postés 63 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 27 janvier 2009
14 mai 2007 à 20:56
# TreeNode tn = new TreeNode();
# string tnText = xn.Name;
#
# // il y a des attributs
# if (xn.Attributes != null && xn.Attributes.Count > 0)
# {
#
# foreach (XmlAttribute attr in xn.Attributes) // parcours des attributs
# tnText += attr.Name + "=" + attr.Value + " " ;
# // ajout des attributs,
# // nom de l'attribut puis sa valeur
# }
tn.Text = tnText;

Voila... pas testé mais ça devrait etre correct...
cavocavu Messages postés 1 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 19 avril 2007
19 avril 2007 à 10:09
Salut,
Bon déjà merci pour ce code il marche nikel et c'est tout à fait ce qu'il me fallait... Ou presque.
En fait j'essaie de l'adapter à mon cas particulier en changeant quelques petites choses mais je débute en C# et je dois dire que je galère pas mal.
Par exemple j'aimerais que les attributs ne soient pas dans un fils mais dans le nom du père. J'ai essayé plusieurs trucs mais bon j'ai des erreurs à chaque fois et je pense que je ne fais pas du tout comme il faut.
Si quelqu'un pouvait m'aider ca serait super. Merci d'avance
cs_ip2x Messages postés 63 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 27 janvier 2009
4 avril 2007 à 12:36
Donc j'ai fait la fonction qui, basée sur l'exemple ci-dessus, génére le document Xml.

C'est là : http://www.csharpfr.com/infomsg_GENERER-XML-PARTIR-TREENODECOLLECTION-TREEVIEW_914653.aspx#5
cs_ip2x Messages postés 63 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 27 janvier 2009
3 avril 2007 à 18:58
Hello et une fonction qui fait l'inverse, à savoir générer un document XML representatif de ce treenode, vous aurriez pas ça sous l'coude ?

J'ai enormement de mal a regénérer mon xml de la mm maniere...
Jackmalone Messages postés 3 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 20 août 2006
20 août 2006 à 03:50
Merci! ça marche! En fait j'avais trouvé peu de temps apres mais ça pourra toujours servir à quelqun...
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
19 août 2006 à 19:03
essaie treeView1.Nodes.Add(TreeXML.GetTreeNodeFromXML("Mon URL"));
Jackmalone Messages postés 3 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 20 août 2006
19 août 2006 à 17:53
Bonjour,

tout d'abord, merci pour ton code qui est bien utile.
Je suis débutant et j'arrive pas à remplir un treeView placé sur un formulaire avec les données du xml. Mon treeView s'appel "treeView1".

J'ai essayé ceci mais sans succès:
treeView1.Nodes = TreeXML.GetTreeNodeFromXML("Mon URL");

Et j'ai comme erreurs:
Error 1: Property or indexer 'System.Windows.Forms.TreeView.Nodes' cannot be assigned to -- it is read only
Error 2 Cannot implicitly convert type 'System.Windows.Forms.TreeNode' to 'System.Windows.Forms.TreeNodeCollection'

Quelqu'un peut il m'aider?
Merci!!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 mai 2006 à 22:51
Voila ta note est enlevée, tu devrais pouvoir renoter.
cs_nadir80 Messages postés 2 Date d'inscription dimanche 5 mars 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 22:07
moi je met 9/10 car apparement je peux pas changer le vote :-( dsl pour cette boulette...
cs_nadir80 Messages postés 2 Date d'inscription dimanche 5 mars 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 22:03
bonjour j'ai un pepin !!!!!!!!
le code je le trouve tip top!!! de la balle!!!! c'est ce que je cherché!! MAIS je cherche un retour pour une application trés sérieuse :-( donc : TreeView -> Fichier XML s'il y a moyen de m'aidé!!

ps : je suis débutant....euh je crois que ca veux dire plein de chose :-s

merci d'avance
moha_yougo Messages postés 40 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 1 avril 2006
15 mars 2006 à 13:08
c bon c régler j'ai fait ça
// parcours des sous-elements XML

foreach (XmlNode subxn in xn.ChildNodes)
{
if(subxn.NodeType != XmlNodeType.Comment)
{
tn.Nodes.Add(DoElement(subxn));
}
}
bonne chance
moha_yougo Messages postés 40 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 1 avril 2006
15 mars 2006 à 12:38
hello,every body
j'utilise cette classe treeXML dans TP je ne veut pas avoir les commentaire dans le treeView
comment faire ça sans changer grand choose
j'ai utiliser xn.nextsibling mais rien a faire les commentaire sont toujours la.
comment faire????????!!!
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
14 avril 2005 à 20:26
merci d'avoir commenté :p
maintenant c'est très à sa place dans tutoriaux ;)
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
14 avril 2005 à 10:55
ah ouais :), mais j'ai pas fait ca car il y a vraiment beaucoup trop de type, et sinon j'aurais plutot fait un truc mieux, du style

switch (xn.NodeType)
{
case XmlNodeType.Texte:
...
case XmlNodeType.CDATA:
...
// etc...
}
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
14 avril 2005 à 08:47
C'est infiniment plus clair.

Pour tes lignes
// le sous-element XML n'est pas une balise mais une valeur textuelle
if (xn.Value != null && xn.Value != "")
tn.Text = xn.Value;

Je pense que tu peux tester le type d'objet avec une ligne comme (c'est à corriger, mais tu comprendras l'esprit), puis traiter en utilisant éventuellement un cast pour obtenir un typage plus fort.

//Recherche le type du noeud
switch (xn.GetType().ToString())
{
case "XmlText": //si c'est du texte
....
break;
case "XmlCDataSection": //si c'est une section CDATA
...
break;
default: //Sinon, on recherche les noeud enfants
...
break;
}
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 avril 2005 à 21:20
C'est vrai que ça ne donne pas super ici, mais si le code est copié dans VS par exemple, ça ne pose aucun problème !
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
12 avril 2005 à 18:19
Voila, j'ai trouver le boutton Edit, et j'ai commenté :)
Je trouve pas ca plus lisible, mais au moins mnt pu personne n'as d'excuses :P
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
12 avril 2005 à 17:59
je vous repond :)

Bidou : "Les commentaires ne sont pratiquement jamais superflu, pour ne pas dire jamais (surtout si tu fais ce code pour les débutants...)"

Personellement je trouve que les commentaires obscurcissent le code, je veux bien ecrire des explications detaillés "apres" le code, mais pas dedans. Ceux qui ont deja lu des codes GNU comprendrons ce que je veux dire.

"Je suis certain que quelques mots d'explications pour les novices ne seraient pas de trop"

Oui, ca on est d'accord, et c'est justement ce pourquoi le forum existe, si des gents veulent des explications, qu'ils n'hesite surtout pas a poser des questions, nous sommes en train de demontrer que le forum est bel et bien actif ;)

Alain Proviste : "commente le un peu pour ceux qui viendront le consulter dans tutoriaux et qui ne comprendront pas :)
non ?"

Je ne suis pas vraiment contre cette idée si vous insistez, mais je n'ai pas trouver le boutton "Edit" :S
Si quelqu'un sait comment je peux editer mon post sans ennuyer Nix, je suis preneur

Warmy : "Tu n'as sans doute pas encore vécu cette situation qui se résume à :
Si tu peux pas lire ton code, réécris le !!!
Tu ne comprend pas à quoi sert ton code, élimine-le. Si ça marche pas, réécris tout."

Non en effet je n'ai jamais vecu ca, generallement je structure mon code le mieux possible, je le fragmente et range les fonctionnalités dans des fichiers leur caracterisant cette fonctionnalité, et j'ai une tres bonne memoire, je retrouve toujours mon code comme il faut et tres peu de relecture me suffit a replonger dans un projet mis de coté, meme si c'est depuis plus d'un an :)

Mais je concoit que ceux qui lise mon tuto peuvent pas se mettre dans ma tete.

Ceci juste pour dire que celui qui n'arrive pas a relire son code, c'est quand meme quelqu'un qui baisse les bras vraiment trop vite, ou alors quelqu'un qui code vraiment comme un porc, et dans n'importe quel cas, cette personne n'as aucune excuse.

Bref, je crois avoir outre-passé largement le sujet, desoler pour mon egarement.
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
12 avril 2005 à 14:13
Les commentaires c'est vital, même sur un code court.
Tu n'as sans doute pas encore vécu cette situation qui se résume à :
Si tu peux pas lire ton code, réécris le !!!
Tu ne comprend pas à quoi sert ton code, élimine-le. Si ça marche pas, réécris tout.
Et là tu maudit le jour où tu as décidé que les commentaires étaient inutiles
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
12 avril 2005 à 12:17
j'en conviens mais même si le code peut te paraitre transparent (c'est toi qui l'a écrit ok) commente le un peu pour ceux qui viendront le consulter dans tutoriaux et qui ne comprendront pas :)
non ?
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 avril 2005 à 08:38
Les commentaires ne sont pratiquement jamais superflu, pour ne pas dire jamais (surtout si tu fais ce code pour les débutants...)
Je suis certain que quelques mots d'explications pour les novices ne seraient pas de trop.
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
11 avril 2005 à 21:36
Bah je dois admettre que je ne savais pas trop quoi mettre d'autre, et puis c'est plutot que le de code qui aide les debutant a comprendre, et les experimenter a voir la chose d'une approche differente si la leur n'est pas ainsi.

C'est vrai que ce n'est pas vraiment tu tut, mais ce code en soi n'as strictement aucune utilité "pratique".
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
11 avril 2005 à 21:28
oui mais peut etre pas tutoriaux non plus ?
Rejoignez-nous