begin process at 2010 02 10 07:59:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Api

 > CRÉATEUR DE ARBORESCENCE TREENODE À PARTIR DE XML

CRÉATEUR DE ARBORESCENCE TREENODE À PARTIR DE XML


 Information sur la source

Note :
Aucune note
Catégorie :Api Classé sous :arborescence, xml, jtree, créer, DefaultMutableTreeNode Niveau :Débutant Date de création :09/11/2007 Vu / téléchargé :7 788 / 420

Auteur : loloof64

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

Cette classe permet de créer une arborescence que l'on peut pratiquement directement intégrer ensuite dans une JTree lors de sa construction, à partir du contenu d'un fichier xml.
Il est possible de le construire à partir des seuls noms des balises, ou des noms des balises et des attributs ... Regarder les commentaires JAVADOC des défintions des constantes dans la source pour plus de précision.

Source

  • /**
  • *
  • */
  • package com.loloof64.classesutilitaires;
  • import java.io.File;
  • import javax.swing.JOptionPane;
  • import javax.swing.tree.DefaultMutableTreeNode;
  • import javax.xml.parsers.DocumentBuilder;
  • import javax.xml.parsers.DocumentBuilderFactory;
  • import org.w3c.dom.Document;
  • import org.w3c.dom.Element;
  • import org.w3c.dom.Node;
  • import org.w3c.dom.NodeList;
  • /**
  • * Classe qui permet de créer une arborescence javax.swing.tree.DefaultMutableTreeNode
  • * (qui dérive javax.swing.tree.TreeNode) à integrer directemement
  • * dans le constructeur de classe implémentant javax.swing.tree.TreeModel, à partir de la
  • * reference java.io.File d'un fichier XML .
  • * <br>Rappel : toute instance de classe implementant TreeModel
  • * (c'est notamment le cas pour javax.swing.tree.DefaultTreeModel)
  • * est directement intégrable dans le constructeur de javax.swing.JTree .
  • * est directement
  • * @author laurent bernabé
  • *
  • */
  • public class CreateurTreeNodeAPArtirDeXML {
  • private File fichier;
  • /*
  • * Les valeurs des modes simples doivent être des puissances de deux :
  • * cela pour permettre la combinaison des différents modes simples .
  • */
  • /*
  • * Modes simples
  • */
  • /**
  • * Dans ce cas-là, seuls les noms des balises seront pris en
  • * compte pour l'affichage .
  • */
  • public final int MODE_BALISES = 1;
  • /**
  • * Dans ce cas-là, seuls les attributs (dont la clé est passée en paramètre de ajouterArborescence) seront pris en compte
  • * pour l'affichage .
  • */
  • public final int MODE_ATTRIBUTS = 2;
  • /**
  • * Affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises.
  • * N'affiche que les noms des balises sinon .
  • */
  • public final int MODE_BALISES_ET_VALEURS = 4;
  • /*
  • * Modes complexes (résultant de combinaisons de modes simples)
  • */
  • /**
  • * Dans ce cas-là, les balises et les attributs (dont la clé est passée en paramètre de ajouterArborescence) seront prises en compte
  • * pour l'affichage .
  • */
  • public final int MODE_BALISES_ET_ATTRIBUTS = MODE_BALISES + MODE_ATTRIBUTS;
  • /**
  • * Affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence.
  • * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence sinon .
  • */
  • public final int MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS = MODE_BALISES_ET_VALEURS + MODE_ATTRIBUTS;
  • /**
  • * @return the fichier
  • */
  • public File getFichier() {
  • return fichier;
  • }
  • /**
  • * @param fichier the fichier to set
  • */
  • public void setFichier(File fichier) {
  • this.fichier = fichier;
  • }
  • /**
  • * Ajoute une JTree avec l'arborescence des attributs
  • * du fichier XML dictionnaire inversé passé en paramètre .
  • * Un fichier dictionnaire inversé bien formé a
  • * <ul>
  • * <li> la balise definitions pour racine
  • * <li> des balises lien pour chaque mot de la definition courante
  • * <li> une balise terminaison par définition
  • * <li> les attributs des balises donnent leurs valeurs, et sont valeur
  • * </ul>
  • * @param mode - int - le mode d'ajout :
  • * <ul>
  • * <li> DictionnaireInverse.MODE_BALISES : les noms des balises sont affichés.
  • * <li> DictionnaireInverse.MODE_BALISES_ET_VALEURS : affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises.
  • * N'affiche que les noms des balises sinon .
  • * <li> DictionnaireInverse.MODE_ATTRIBUTS :
  • * les valeurs des attributs des balises, précisés dans
  • * le paramètre attributs, sont affichées .
  • * <li> DictionnaireInverse.MODE_BALISES_ET_ATTRIBUTS :
  • * les noms des balises et les valeurs des attributs des balises, précisés dans
  • * le paramètre attributs, sont affichées .
  • * <li> DictionnaireInverse.MODE_BALISES_ET_ATTRIBUTS_ET VALEURS :
  • * affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence.
  • * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence sinon .
  • * </ul>
  • * @param attributs - String[] - les clés d'attribut (pris en compte si
  • * le mode permet la lecture d'attributs) .
  • * @throws IllegalArgumentException - si on autorise la lecture d'attribut et qu'aucun n'est précisé
  • */
  • public DefaultMutableTreeNode obtenirArborescenceDesAttributs(int mode, String[] attributs)
  • throws IllegalArgumentException
  • {
  • /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • * ATTENTION
  • * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • * Tous les modes permettant la lecture d'attributs
  • * doivent figurer dans ce test !!!
  • * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • */
  • if ((mode == MODE_ATTRIBUTS | mode == MODE_BALISES_ET_ATTRIBUTS | mode == MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS)
  • && (attributs == null || attributs.length==0) )
  • throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul ou vide !");
  • DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
  • DefaultMutableTreeNode noeudDefinitions = null;
  • try {
  • DocumentBuilder constructeur = fabrique.newDocumentBuilder();
  • Document document = constructeur.parse(fichier);
  • /*
  • * Le document contient un noeud au-dessus de la
  • * première balise du fichier XML. (La super racine
  • * de elemDefinitions n'est pas la super racine du fichier
  • * XML, mais une racine supplémentaire située au-dessus
  • * de cette dernière). Donc, plus bas, je retourne, non
  • * pas elemDefinitions, mais son (premier) fils .
  • */
  • noeudDefinitions = new DefaultMutableTreeNode("Racine");
  • Element elemDefinitions = document.getDocumentElement();
  • ajouterEnfantsDeElementDansNoeud(elemDefinitions, noeudDefinitions, mode, attributs);
  • } catch (IllegalArgumentException e){
  • System.err.println("La référence fichier configurée est null !");
  • e.printStackTrace();
  • JOptionPane.showMessageDialog(null, "La référence fichier configurée est null !", "Erreur ! ", JOptionPane.ERROR_MESSAGE);
  • } catch (Exception e){
  • System.err.println("Erreur dans la lecture du fichier censé être un .xml !");
  • e.printStackTrace();
  • JOptionPane.showMessageDialog(null, "Erreur dans la lecture du fichier censé être un .xml !", "Erreur ! ", JOptionPane.ERROR_MESSAGE);
  • }
  • /*
  • * Pour les raisons précisées ci-haut, c'est le
  • * (premier) fils de elemDefinitions que je retourne .
  • */
  • return (DefaultMutableTreeNode)(noeudDefinitions.getFirstChild());
  • }
  • /**
  • *
  • * @param elem - org.w3c.dom.Element - l'Element du fichier XML
  • * dont on doit extraire les enfants Element .
  • * @param noeud - javax.swing.tree.DefaultMutableTreeNode - le noeud pour Jtree dans
  • * lequel on souhaite fixer la structure obtenue .
  • * @param mode - int - le mode d'ajout .
  • * @param attributs - String[] - les clés d'attribut (prises en compte si
  • * le mode permet la lecture d'attributs) .
  • * @throws IllegalArgumentException - si on autorise la lecture d'attribut et qu'aucun n'est précisé .
  • */
  • private void ajouterEnfantsDeElementDansNoeud (
  • Element elem, DefaultMutableTreeNode noeud, int mode, String[] attributs
  • ) throws IllegalArgumentException
  • {
  • boolean estTerminaison;
  • String chaineRecuperee,chaineRecupereeTemp,chaineRecuperee1;
  • NodeList listeEnfants;
  • //Determine l'état de terminaison ou non du noeud
  • listeEnfants = elem.getChildNodes();
  • if(listeEnfants.getLength()<=1)
  • estTerminaison = true;
  • else
  • estTerminaison = false;
  • //Création du texte du noeud
  • switch (mode){
  • case MODE_BALISES :
  • chaineRecuperee = elem.getNodeName();
  • if(chaineRecuperee == "")
  • chaineRecuperee = "non/mal défini ";
  • break;
  • /*
  • * Note : si l'attribut est unique,
  • * le texte "(attribut <attribut>)"
  • * ne sera pas affiché .
  • */
  • case MODE_ATTRIBUTS :
  • if (attributs == null || attributs.length == 0)
  • throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul ou vide !");
  • chaineRecuperee = "";
  • for (int i = 0; i < attributs.length; i++){
  • chaineRecupereeTemp = elem.getAttribute(attributs[i]);
  • if(chaineRecupereeTemp == "")
  • chaineRecuperee += "non ou mal défini" +((attributs.length>1)?"(attribut "+ attributs[i]+")":"");
  • else
  • chaineRecuperee += chaineRecupereeTemp+((attributs.length>1)?"(attribut "+ attributs[i]+")":"");
  • }
  • break;
  • /*
  • * Affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises.
  • * N'affiche que les noms des balises sinon .
  • */
  • case MODE_BALISES_ET_VALEURS :
  • chaineRecuperee = elem.getNodeName();
  • if(chaineRecuperee == "")
  • chaineRecuperee = "non/mal défini";
  • if(estTerminaison){
  • chaineRecuperee += " (balise) : "+elem.getTextContent()+" (valeur)";
  • }
  • break;
  • case MODE_BALISES_ET_ATTRIBUTS :
  • chaineRecuperee = "";
  • if (attributs == null || attributs.length == 0)
  • throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul !");
  • chaineRecuperee1 = elem.getNodeName();
  • if(chaineRecuperee1 == ""){
  • chaineRecuperee = "non/mal défini (balise)";
  • }
  • else {
  • chaineRecuperee = chaineRecuperee1+" (balise)";
  • }
  • //attributs
  • for (int i = 0; i < attributs.length; i++){
  • chaineRecupereeTemp = elem.getAttribute(attributs[i]);
  • if(chaineRecupereeTemp == "")
  • chaineRecuperee += " : non ou mal défini (attribut "+ attributs[i]+")";
  • else
  • chaineRecuperee += " : "+chaineRecupereeTemp+" (attribut "+attributs[i]+")";
  • }
  • break;
  • /*
  • * Affiche les valeurs des balises qui englobent directement
  • * du contenu texte à la place d'autre balise ou de vide en plus
  • * du nom des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence.
  • * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
  • * de ajouterArborescence sinon .
  • */
  • case MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS :
  • chaineRecuperee = "";
  • if (attributs == null || attributs.length == 0)
  • throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul !");
  • chaineRecuperee1 = elem.getNodeName();
  • if(chaineRecuperee1 == ""){
  • chaineRecuperee = "non/mal défini (balise)";
  • }
  • else {
  • chaineRecuperee = chaineRecuperee1+" (balise)";
  • }
  • //attributs
  • for (int i = 0; i < attributs.length; i++){
  • chaineRecupereeTemp = elem.getAttribute(attributs[i]);
  • if(chaineRecupereeTemp == "")
  • chaineRecuperee += " : non ou mal défini (attribut "+ attributs[i]+")";
  • else
  • chaineRecuperee += " : "+chaineRecupereeTemp+" (attribut "+attributs[i]+")";
  • }
  • //valeurs
  • if (estTerminaison) {
  • chaineRecuperee += " : " + elem.getTextContent() + "(valeur)";
  • }
  • break;
  • default :
  • chaineRecuperee = "Erreur : mode de lecture mal défini !";
  • }
  • //Enregistrement des enfants du noeud
  • DefaultMutableTreeNode noeudInterne = new DefaultMutableTreeNode(chaineRecuperee);
  • if(estTerminaison){
  • noeudInterne.setAllowsChildren(false);
  • }
  • else{
  • noeudInterne.setAllowsChildren(true);
  • for(int i = 0; i < listeEnfants.getLength(); i++) {
  • if (listeEnfants.item(i).getNodeType() == Node.ELEMENT_NODE) {
  • ajouterEnfantsDeElementDansNoeud((Element) (listeEnfants
  • .item(i)), noeudInterne, mode, attributs);
  • }
  • }
  • }
  • noeud.add(noeudInterne);
  • }
  • }
/**
 * 
 */
package com.loloof64.classesutilitaires;

import java.io.File;

import javax.swing.JOptionPane;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * Classe qui permet de créer une arborescence javax.swing.tree.DefaultMutableTreeNode
 * (qui dérive javax.swing.tree.TreeNode) à integrer directemement
 * dans le constructeur de classe implémentant javax.swing.tree.TreeModel, à partir de la
 * reference java.io.File d'un fichier XML . 
 * <br>Rappel : toute instance de classe implementant TreeModel 
 * (c'est notamment le cas pour javax.swing.tree.DefaultTreeModel)
 * est directement intégrable dans le constructeur de javax.swing.JTree .
 * est  directement 
 * @author laurent bernabé
 *
 */
public class CreateurTreeNodeAPArtirDeXML {

	private File fichier;
	
	/*
	 * Les valeurs des modes simples doivent être des puissances de deux :
	 * cela pour permettre la combinaison des différents modes simples .
	 */
	
	
	/*
	 * Modes simples
	 */
	
	/**
	 * Dans ce cas-là, seuls les noms des balises seront pris en
	 * compte pour l'affichage .
	 */
	public final int MODE_BALISES = 1;
	
	/**
	 * Dans ce cas-là, seuls les attributs (dont la clé est passée en paramètre de ajouterArborescence) seront pris en compte
	 * pour l'affichage .
	 */
	public final int MODE_ATTRIBUTS = 2;
	
	/**
	 * Affiche les valeurs des balises qui englobent directement
	 * du contenu texte à la place d'autre balise ou de vide en plus
	 * du nom des balises.
	 * N'affiche que les noms des balises sinon .
	 */
	public final int MODE_BALISES_ET_VALEURS = 4;
	
	/*
	 * Modes complexes (résultant de combinaisons de modes simples)
	 */
	
	/**
	 * Dans ce cas-là, les balises et les attributs (dont la clé est passée en paramètre de ajouterArborescence) seront prises en compte
	 * pour l'affichage . 
	 */
	public final int MODE_BALISES_ET_ATTRIBUTS = MODE_BALISES + MODE_ATTRIBUTS;
	
	/**
	 * Affiche les valeurs des balises qui englobent directement
	 * du contenu texte à la place d'autre balise ou de vide en plus
	 * du nom des balises et des valeurs des attributs précisés en paramètre
	 * de ajouterArborescence.
	 * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
	 * de ajouterArborescence sinon .
	 */
	public final int MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS = MODE_BALISES_ET_VALEURS + MODE_ATTRIBUTS;
	
	
	
	/**
	 * @return the fichier
	 */
	public File getFichier() {
		return fichier;
	}

	/**
	 * @param fichier the fichier to set
	 */
	public void setFichier(File fichier) {
		this.fichier = fichier;
	}

	/**
	 * Ajoute une JTree avec l'arborescence des attributs
	 * du fichier XML dictionnaire inversé passé en paramètre .
	 * Un fichier dictionnaire inversé bien formé a
	 * <ul>
	 * <li> la balise definitions pour racine
	 * <li> des balises lien pour chaque mot de la definition courante
	 * <li> une balise terminaison par définition
	 * <li> les attributs des balises donnent leurs valeurs, et sont valeur
	 * </ul>
	 * @param mode - int - le mode d'ajout :
	 * <ul>
	 * <li> DictionnaireInverse.MODE_BALISES : les noms des balises sont affichés.
	 * <li> DictionnaireInverse.MODE_BALISES_ET_VALEURS : affiche les valeurs des balises qui englobent directement
	 * du contenu texte à la place d'autre balise ou de vide en plus
	 * du nom des balises.
	 * N'affiche que les noms des balises sinon .
	 * <li> DictionnaireInverse.MODE_ATTRIBUTS : 
	 * les valeurs des attributs des balises, précisés dans 
	 * le paramètre attributs, sont affichées .
	 * <li> DictionnaireInverse.MODE_BALISES_ET_ATTRIBUTS : 
	 * les noms des balises et les valeurs des attributs des balises, précisés dans 
	 * le paramètre attributs, sont affichées .
	 * <li> DictionnaireInverse.MODE_BALISES_ET_ATTRIBUTS_ET VALEURS :
	 * affiche les valeurs des balises qui englobent directement
	 * du contenu texte à la place d'autre balise ou de vide en plus
	 * du nom des balises et des valeurs des attributs précisés en paramètre
	 * de ajouterArborescence.
	 * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
	 * de ajouterArborescence sinon .
	 * </ul>
	 * @param attributs - String[] - les clés d'attribut (pris en compte si
	 * le mode permet la lecture d'attributs) .
	 * @throws IllegalArgumentException - si on autorise la lecture d'attribut et qu'aucun n'est précisé
	 */
	public DefaultMutableTreeNode obtenirArborescenceDesAttributs(int mode, String[] attributs)
	throws IllegalArgumentException
	{
		/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		 *                  ATTENTION 
		 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		 * Tous les modes permettant la lecture d'attributs
		 * doivent figurer dans ce test !!!
		 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		 */
		if ((mode == MODE_ATTRIBUTS | mode == MODE_BALISES_ET_ATTRIBUTS | mode == MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS)
			&& (attributs == null || attributs.length==0) )
			throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul ou vide !");
		DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
		DefaultMutableTreeNode noeudDefinitions = null;
		try {
			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
			Document document = constructeur.parse(fichier);
			
			/*
			 * Le document contient un noeud au-dessus de la 
			 * première balise du fichier XML. (La super racine
			 * de elemDefinitions n'est pas la super racine du fichier
			 * XML, mais une racine supplémentaire située au-dessus
			 * de cette dernière). Donc, plus bas, je retourne, non
			 * pas elemDefinitions, mais son (premier) fils .
			 */
			noeudDefinitions = new DefaultMutableTreeNode("Racine");
			Element elemDefinitions = document.getDocumentElement();
			
			ajouterEnfantsDeElementDansNoeud(elemDefinitions, noeudDefinitions, mode, attributs);
			
		} catch (IllegalArgumentException e){
			System.err.println("La référence fichier configurée est null !");
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "La référence fichier configurée est null !", "Erreur ! ", JOptionPane.ERROR_MESSAGE);
		} catch (Exception e){
			System.err.println("Erreur dans la lecture du fichier censé être un .xml !");
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Erreur dans la lecture du fichier censé être un .xml !", "Erreur ! ", JOptionPane.ERROR_MESSAGE);
		}
		/* 
		 * Pour les raisons précisées ci-haut, c'est le 
		 * (premier) fils de elemDefinitions que je retourne . 
		 */
		return (DefaultMutableTreeNode)(noeudDefinitions.getFirstChild());
	}
	
	/**
	 * 
	 * @param elem - org.w3c.dom.Element - l'Element du fichier XML
	 * dont on doit extraire les enfants Element .
	 * @param noeud - javax.swing.tree.DefaultMutableTreeNode - le noeud pour Jtree dans
	 * lequel on souhaite fixer la structure obtenue .
	 * @param mode - int - le mode d'ajout .
	 * @param attributs - String[] - les clés d'attribut (prises en compte si
	 * le mode permet la lecture d'attributs) .
	 * @throws IllegalArgumentException - si on autorise la lecture d'attribut et qu'aucun n'est précisé .
	 */
	private void ajouterEnfantsDeElementDansNoeud (
	     Element elem, DefaultMutableTreeNode noeud, int mode, String[] attributs
	   ) throws IllegalArgumentException
	{
		boolean estTerminaison;
		String chaineRecuperee,chaineRecupereeTemp,chaineRecuperee1;
		NodeList listeEnfants;
		
		
		//Determine l'état de terminaison ou non du noeud
		listeEnfants = elem.getChildNodes();
		if(listeEnfants.getLength()<=1)
			estTerminaison = true;	
		else
			estTerminaison = false;
		
		//Création du texte du noeud
		switch (mode){
		case MODE_BALISES :
			chaineRecuperee = elem.getNodeName();
			if(chaineRecuperee == "") 
				chaineRecuperee = "non/mal défini ";
			break;
		/*
		 * Note : si l'attribut est unique,
		 *  le texte "(attribut <attribut>)"
		 *  ne sera pas affiché .
		 */
		case MODE_ATTRIBUTS :
			if (attributs == null || attributs.length == 0)
				throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul ou vide !");
			chaineRecuperee = "";
			for (int i = 0; i < attributs.length; i++){
				chaineRecupereeTemp = elem.getAttribute(attributs[i]);
				if(chaineRecupereeTemp == "")
					chaineRecuperee += "non ou mal défini" +((attributs.length>1)?"(attribut "+ attributs[i]+")":"");
				else
					chaineRecuperee += chaineRecupereeTemp+((attributs.length>1)?"(attribut "+ attributs[i]+")":"");
				
			}	
			break;
		
		/*
		 * Affiche les valeurs des balises qui englobent directement
		 * du contenu texte à la place d'autre balise ou de vide en plus
		 * du nom des balises.
		 * N'affiche que les noms des balises sinon .
		 */
		case MODE_BALISES_ET_VALEURS :
			chaineRecuperee = elem.getNodeName();
			if(chaineRecuperee == "")
				chaineRecuperee = "non/mal défini";
			if(estTerminaison){
				chaineRecuperee += " (balise) : "+elem.getTextContent()+" (valeur)"; 
			}
			break;
		case MODE_BALISES_ET_ATTRIBUTS :
			chaineRecuperee = "";
			if (attributs == null || attributs.length == 0)
				throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul !");
			chaineRecuperee1 = elem.getNodeName();
			if(chaineRecuperee1 == ""){ 
				chaineRecuperee = "non/mal défini (balise)";
			}
			else {
				chaineRecuperee = chaineRecuperee1+" (balise)";
			}
			//attributs
			for (int i = 0; i < attributs.length; i++){
				chaineRecupereeTemp = elem.getAttribute(attributs[i]);
				if(chaineRecupereeTemp == "")
					chaineRecuperee += " : non ou mal défini (attribut "+ attributs[i]+")";
				else
					chaineRecuperee += " : "+chaineRecupereeTemp+" (attribut "+attributs[i]+")";
				
			}	
			break;
			
		/*
		 * Affiche les valeurs des balises qui englobent directement
		 * du contenu texte à la place d'autre balise ou de vide en plus
		 * du nom des balises et des valeurs des attributs précisés en paramètre
		 * de ajouterArborescence.
		 * N'affiche que les noms des balises et des valeurs des attributs précisés en paramètre
		 * de ajouterArborescence sinon .
		 */
		case MODE_BALISES_ET_ATTRIBUTS_ET_VALEURS :
			chaineRecuperee = "";
			if (attributs == null || attributs.length == 0)
				throw new IllegalArgumentException("Lecture d'attributs permises et le tableau attributs est nul !");
			chaineRecuperee1 = elem.getNodeName();
			if(chaineRecuperee1 == ""){ 
				chaineRecuperee = "non/mal défini (balise)";
			}
			else {
				chaineRecuperee = chaineRecuperee1+" (balise)";
			}
			//attributs
			for (int i = 0; i < attributs.length; i++){
				chaineRecupereeTemp = elem.getAttribute(attributs[i]);
				if(chaineRecupereeTemp == "")
					chaineRecuperee += " : non ou mal défini (attribut "+ attributs[i]+")";
				else
					chaineRecuperee += " : "+chaineRecupereeTemp+" (attribut "+attributs[i]+")";
				
			}
			//valeurs
			if (estTerminaison) {
				chaineRecuperee += " : " + elem.getTextContent() + "(valeur)";
			}			
				break;
		default :
			chaineRecuperee = "Erreur : mode de lecture mal défini !";
		}
		
		//Enregistrement des enfants du noeud
		DefaultMutableTreeNode noeudInterne = new DefaultMutableTreeNode(chaineRecuperee);
		if(estTerminaison){
			noeudInterne.setAllowsChildren(false);
		}		
		else{
			noeudInterne.setAllowsChildren(true);
		    for(int i = 0; i < listeEnfants.getLength(); i++) {
				if (listeEnfants.item(i).getNodeType() == Node.ELEMENT_NODE) {
					ajouterEnfantsDeElementDansNoeud((Element) (listeEnfants
							.item(i)), noeudInterne, mode, attributs);
				}				
			}

		}
			noeud.add(noeudInterne);
	}

	
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

SIMPLE CUBE COLORÉ POUR J2ME [JSR184] AVEC UNE DEMO SIMPLE
Source avec Zip Source avec une capture JPANELTEXTEDEFILANT : FAIRE DEFILER DU TEXTE (PLUSIEURES MAN...
Source avec Zip Source avec une capture [JAVA][J2ME] SOMMES KAKURO POUR MIDP 2.0
Source avec Zip Source avec une capture DICTIONNAIRE INVERSÉ PAR ARBORESCENCE JTREE ET XML
Source avec Zip APPEL ET CONFIGURATION SIMPLIFIÉE DE JFILECHOOSER

 Sources de la même categorie

ENVOI D'UNE ARBORESSENCE EN JAVA VERS SERVEUR FTP par moumou95
ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM par coltman
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

 Sources en rapport avec celle ci

ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM par coltman
Source avec Zip Source avec une capture DICTIONNAIRE INVERSÉ PAR ARBORESCENCE JTREE ET XML par loloof64
Source avec Zip ARBORESCENCE - DISQUE DUR - JTREE par grand_jeanluc
Source avec Zip [JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE par Waldo2188
COMMENT LISTER L'ARBORESCENCE DES DISQUE DUR DANS UN JTREE par Duss

Commentaires et avis

Commentaire de nadjet24 le 14/04/2008 19:41:58

bonjour j'ai utiliser votre programme c'est bien structuré merci.Mais j'ai un problème quand je l'éxécute il ya une erreur s'affiche "project does not a main class set".car mon objectif c'est d'avoir un fichier xml en entrée et avoir son arboressence en sortie .Je n'ai pas bien saisis votre description Cette classe permet de créer une arborescence que l'on peut pratiquement directement intégrer ensuite dans une JTree lors de sa construction, à partir du contenu d'un fichier xml.Et g'ignore où exactement je peux intergrer votre programme merci d'avantage.

Commentaire de loloof64 le 15/04/2008 08:40:10

Bonjour Nadjet24 : désolé pour le retard . Et merci pour le compliment.

Tu as eu cette erreur parce que la machine virtuelle Java (ou plus souvent appellée Java Virtual Machine) recherche une fonction, dans l'ensemble de tes classes, dont la signature est

public static void main(String args[]){}.

C'est la fonction la plus importante .

Commentaire de loloof64 le 15/04/2008 08:49:42

Tu peux aussi regarder une source où j'utilise cette classe, elle est aussi organisée en packages (la classe qui contient le main est com.loloof64.dictionnaireinverse.DictionnaireInverse, elle dérive aussi directement la classe fenêtre javax.swing.JFrame) .
http://www.javafr.com/codes/DICTIONNAIRE-INVERSE-ARBORESCENCE-JTREE-XML_44657.aspx


N'hésites pas à me demander des précisions :) .

Commentaire de loloof64 le 15/04/2008 09:10:37

public void static main(String args[]){
Jframe fenetre = ... ;
//affichera que les noms des balises du fichier XML
int mode = CreateurTreNodeAPArtirDeXML.MODE_BALISE;

createurArbre = new CreateurTreeNodeAPartirDeXML();
createurArbre.setFichier(new File("C:\\Documents and Settings\\Utilisateur\\Bureau\\FichierALire.xml"));
DefaultMutableTreeNode arbre = createurArbre.obtenirArborescenceDesAttributs(mode,null));
fenetre.add(new JTree(arbre));

//et attention à la gestion des exceptions !

Commentaire de nadjet24 le 16/04/2008 12:39:25

Mercie pour votre aide j'ai utiliser votre code concernant le dictionnaire inverse d'arboressence mais il ya une erreur qui s'affiche  concernant le package javax.swing dans la classe DinctionnaireInverse je souhaite telecharger le package je n'arrive pas à le retrouver merci d'avantage.

Commentaire de loloof64 le 16/04/2008 13:11:13

Bonjour Nadjet : tu as quelle version de Java ?
L'idéal serait que tu télécharges la version 6 sur le site officiel de Sun : le package javax.swing est automatiquement distribué avec, et il y a des simplicités de langage comme la programmation générique par exemple (dont tu as peut-être eu un aperçu si jamais tu as déjà programmé en C++) .

Moi aussi avant je ne pouvais programmer avec javax.swing car il ne figurait pas dans ma version de Java (j'avais alors la version 1.1.2) .

Commentaire de vienbv le 13/07/2009 11:43:04

Bonjour,

Merci beacoup pour ton code, cela m'aide bien

Commentaire de loloof64 le 16/07/2009 17:03:11

Je suis heureux d'apprendre que ce code ait pu t'aider.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

créer un fichier excel à partir d'un fichier xml [ par Tara ] Bonjour à tous !Mon problème se résume dans le sujet à savoir : comment puis-je créer un fichier excel à partir d'un fichier xml ?Faut-il que je passe [JTree] Poblème de Copier/Coller [ par breed1200 ] Salut à tous!Je fais un soft avec un JTree composé de DefaultMutableTreeNode qui contiennent des Objets persos. J'ai implémenté le Drag n drop sans so 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 Générer un fichier XML [ par Tara ] Salut à tous !Je ne connais pas du tout le XML mais il me faudrait créer un fichier XML dans lequel je présenterais des données extraites à l'aide d Créer un fichier xml [ par Tara ] Merci pour les deux réponses que j'ai reçues. Mais j'ai tout de même vu que l'on pouvait écrire directement du xml à l'aide de DOM (et J... je ne sais renommer une DefaultMutableTreeNode dans un JTree [ par ratonlarvor ] ratonlarvor :Bonjour, Je voudrais renommer une DefaultMutableTreeNode dans mon JTree mais je ne connait pas la méthode.Quelqu'un saurait t'il comment URGENT : problème de sélection dans un JTree [ par terminagroo ] Bonjour,Voil&#224; j'ai cr&#233;&#233; une arborescence de fichiers qui fonctionne plut&#244;t bien (un JTree). Mais mon probl&#232;me est que lorsque JTree Applet probleme [ par fredspv ] Bonjour,Je teste actuellement un JTree dans un Applet hors mon JTree ne s'affiche pas entierement pourquoi ?Voici le code:import java.awt.*;import jav Operation sur JTree [ par alonsyl ] bonjour,dans le constructeur d'une JFrame, j'ai construis un JTree de la maniere suivante :DefaultMutableTreeNode code6 =&nbsp;< construire un JTree grace a un fichier XML [ par julwoko ] voila Je suis d&#233;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


Nos sponsors


Sondage...

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,936 sec (4)

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