Treexml

Soyez le premier à donner votre avis sur cette source.

Vue 20 729 fois - Téléchargée 1 682 fois

Description

Fichier XML -> TreeView (Parser XML)

Source / Exemple :


// je suggere de commencer a lire la deuxieme fonction, GetTreeNodeFromXML

public class TreeXML
{
	private static TreeNode DoElement(XmlNode xn)
	{
		TreeNode tn = new TreeNode(xn.Name);
		// créé l'objet TreeNode de base qui va recevoir les données XML
		// il portera le nom de la balise XML

		// il y a des attributs
		if (xn.Attributes != null && xn.Attributes.Count > 0)
		{
			TreeNode attr_node = tn.Nodes.Add("Attibutes");
			// on creer un sous arbre
			// qui contiendra les attributs
			
			foreach (XmlAttribute attr in xn.Attributes)    // parcours des attributs
				attr_node.Nodes.Add(attr.Name + "=" + attr.Value);
				// ajout des attributs,
				// nom de l'attribut puis sa valeur
		}

		// le sous-element XML n'est pas une balise mais une valeur textuelle
		if (xn.Value != null && xn.Value != "")
			tn.Text = xn.Value;
		else
		{
			// parcours des sous-elements XML
			foreach (XmlNode subxn in xn.ChildNodes)
				tn.Nodes.Add(DoElement(subxn));
				// on ajoute le sous-element ainsi que ses propres
				// sous-element recursivement
		}
		return (tn);
		// une fois la recursion terminée, on renvoie le TreeNode, qui contient ses sous TreeNode
	}

	public static TreeNode GetTreeNodeFromXML(string xml_file)
	{
		XmlDocument doc = new XmlDocument();
		doc.Load(xml_file);
		// charge un fichier xml, cette fonction se charge toute seule de gerer le fichier
		// pas besoin de Close ou autre

		XmlNode root = doc.DocumentElement;
		// root devient le premier element XML
		// (il n'y en a jamais plus d'un en XML, il est toujours unique)

		return (DoElement(root));
		// appel a DoElement
	}
}

Conclusion :


Il n'y a pas de commentaires car bien souvent les commentaires decalent les lignes, on ne sait plus lesquels vont ou, ca complique les chose. Les classes utilisés ici sont vraiment simple et tres bien concu, par consequent je pense que le code parle de lui meme.

En cas de question eventuelles, n'hesitez pas ;)

Message a l'attention des Admins/Modo : Je sais que ce code est d'une banalité a mourrir, mais cependant des gents disent encore avoir du mal avec l'XML en .NET et disent ne pas toujours trouver toutes les infos qu'ils cherchent, j'espere que ce code et les questions/réponses qui suivront pourront leur apporter des lumiere :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

# 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...
Messages postés
1
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
19 avril 2007

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
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

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
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

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...
Messages postés
3
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
20 août 2006

Merci! ça marche! En fait j'avais trouvé peu de temps apres mais ça pourra toujours servir à quelqun...
Afficher les 23 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.