begin process at 2010 02 10 11:21:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Api

 > ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM

ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM


 Information sur la source

Note :
Aucune note
Catégorie :Api Classé sous :JDOM, JTree, XML, exporter, enregistrer Niveau :Débutant Date de création :22/01/2009 Vu :1 845

Auteur : coltman

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

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

  • 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());
  • }
  • }
  • }
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());
			}
		
	}
}



 Sources de la même categorie

ENVOI D'UNE ARBORESSENCE EN JAVA VERS SERVEUR FTP par moumou95
Source avec Zip WIZARD JAVA API par aissam36
JCONFIGURATIONMANAGER - GESTION DES CONFIGURATIONS par Francks11
Source avec Zip Source avec une capture FRAGMENTER, DÉFRAGMENTER UN FICHIER par Chatbour
Source avec Zip RFID_RS232 par didoux95

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRATEUR DE FLUX RSS par mimosa803
PARCOURS PRÉFIXE (EN PROFONDEUR) D'UN DOCUMENT XML par NeoZ
Source avec Zip CRÉATEUR DE ARBORESCENCE TREENODE À PARTIR DE XML par loloof64
Source avec Zip Source avec une capture DICTIONNAIRE INVERSÉ PAR ARBORESCENCE JTREE ET XML par loloof64
Source avec Zip Source avec une capture MANIPULATION DE FICHIER XML par hedi_tounsi

Commentaires et avis

Commentaire de uhrand le 27/01/2009 01:52:21

J'ai toujours utilisé simplement XMLEncoder pour sauvegarder et charger mes JTree. Par exemple:

    private void save(){
        try{
            FileOutputStream fos = new FileOutputStream(filename);
            XMLEncoder o = new XMLEncoder(new BufferedOutputStream(fos));
            o.writeObject(tree.getModel());
            o.close();
        }catch( IOException e){
            e.printStackTrace();
        }
    }

    private void load(){
        try {
            XMLDecoder d = new XMLDecoder(new BufferedInputStream(new FileInputStream(filename)));
            tree.setModel((TreeModel)d.readObject());
            d.close();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
    }

Commentaire de coltman le 27/01/2009 10:00:20

Ah oui c'est vrai que c'est plus simple et plus court ... cependant si on traite des objets bien particuliers dans le jtree je ne pense pas que ca tournera avec le XMLEncoder

Commentaire de uhrand le 28/01/2009 13:27:03

Pour XMLEncoder, il suffit que les objets respectent le format "Bean", qui est extrèmement simple:

une public class où nous ajoutons un constructeur sans paramètres et les méthodes setXXX et getXXX(ou isXXX) pour les propriétés.

Et voilà, c'est déjà tous pourque ça fonctionne!

Commentaire de PERRYALAIN le 04/02/2009 16:34:11

Bonjour,

Je ne saisis pas ce code : on dirait qu'il prévoit un arbre dans lequel il y a des noeuds Joueur, mais également pour un noeud Joueur, potentiellement un noeud Joueur ou un noeud Category.
Dans quelle situation réelle peut-on avoir des joueurs de joueurs de joueurs ...

Rien qu'à l'oeil, le code doit planter en liste 57 pour un pb de casting, non ?

Il semble aussi quand on regarde l'indentation entre ligne 30 et 32 qu'une bonne partie du code a disparu.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Balise xml et JDOM [ par Ekik ] Bonjours,Voila mon problème, je dois afficher dans un fichier une balise comme ceci<code><target></code>J'aimerai que <target> extaire les données d'un fichier XMl et les enregistrer dans une base de donnée access [ par maytica ] je veut analyser un fichier XMl et extraire ses données pour les enregistrer dans une base de donnée "access",j'essayer pas mal de fois mais ça n'a p JDOM - XML - Erreur de lecture de caracteres [ par estetzein ] Bonjour,Voila, j'utilise JDOM pr manipuler mon fichier XML.Aussi, lorsque je le parse, je recupere une erreur : java.io.UTFDataFormatException: Invali xml à partir d'une requete [ par loy_822 ] bonjour, voila mon problème :je suis en train de faire un explorateur avec un JTree qui représente tous les répertoires et sous-répertoires de ma base construire un JTree grace a un fichier XML [ par julwoko ] voila Je suis débutant en JTree et XML et j'aimerai avoir quelque conseil ou si des personne l'avait deja fait ... J'ai un fichier xml de se ge [XML] Parseur (SAX ou JDOM) + Utilisation DTD [ par zeldoi5 ] Bonjour, j'ai deux questions à vous poser, désolé si ces dernières ont déjà été posées, mais je n'ai trou Parser du XML avec JDOM en java [ par red210 ] Voila je pose une ptit questin concernant le XML... Je viens tout juste de lire un super tuto pour lire et générer du XML ca me pousse &#224 Probleme d'import de package avec eclipse [ par MoOx_t ] Bonjour a tous!Voila ma situation : Je suis en stage de fin d'étude en IUT d'informatique et je réalise un etude sur le portage d'une interf JDOM : recherche d'éléments dans un arbre XML [ par newfsch ] Bonjour, j'utilise JDOM pour traiter des documents XML. Ma question est la suivante : Comment se posiitionner ou sélectionner un ou des éléments pas l recuperation des noeuds d'arbre Xml avec jdom [ par kaninama ] Bonjour tout le monde, je veux récupérer tous les noeuds d'un arbre xml a l'aide de jdom mais après les langues recherche que j'ais fa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales