Enregistrer l'arborescence d'un jtree dans un xml avec jdom

Contenu du snippet

Peu de souces et forums sur le net proposent une solution.

Je vous propose donc une classe qui permet d'enregistrer l'arborescence d'un JTree dans un fichier XML grâce aux plus simples et maniables des API pour XML, JDOM. Cela peut avoir beaucoup d'applications.

Dans mon exemple j'ai un JTree composé de noeud DefaultMutableTreeNode et contenant des objets de type Joueur.

Voilà, pour toute remarque question ou observation envoyer moi un MP.

Source / Exemple :


import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;

import javax.swing.tree.DefaultMutableTreeNode;

import org.jdom.*;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class TreetoXML {
	
	public Element xmlrootelement=null;
	public Document treetoxmldoc=null;
	
	public TreetoXML (DefaultMutableTreeNode MONARBREtreerootnode) {
		
		xmlrootelement=new Element("Mon_Arbre");
		treetoxmldoc=new Document(xmlrootelement);
		this.execute(MONARBREtreerootnode, xmlrootelement);
		
	}
	
	public void execute (DefaultMutableTreeNode node, Element parelement) { 
		
		Object o = node.getUserObject();
		
		if (o instanceof Joueur) {
							
				Enumeration enumchildren = node.children();
				
				while (enumchildren.hasMoreElements()) {
					
					DefaultMutableTreeNode currentnode=(DefaultMutableTreeNode) enumchildren.nextElement();
					Object p = currentnode.getUserObject();
					
					if (p instanceof Joueur ) {
						
							
							
							Element newelement;
							
							if (currentnode.isLeaf()) {
								
								newelement = new Element("Joueur");
							}
							
							else {
								
								newelement = new Element("Category");
								
							}

							Joueur newth = null;
							newth = (Joueur) currentnode.getUserObject();

							newelement.setAttribute("Name", newth.Name);
							newelement.setAttribute("ID", newth.ID);
							
							parelement.addContent(newelement);
							
							if (currentnode.isLeaf()==false) {
								
							execute(currentnode,newelement);
							
						}
					}
				}
				
		}
	}

	public void save () {
		
		XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
        try {
			sortie.output(treetoxmldoc, new FileOutputStream("C:/Data/Coltman/Desktop/MonArbreEnXML.xml"));
		} catch (FileNotFoundException e1) {
			System.out.println(e1.getMessage());
		} catch (IOException e1) {
			System.out.println(e1.getMessage());
			}
		
	}
}

A voir également

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.