Accueil > > > CRÉATEUR DE ARBORESCENCE TREENODE À PARTIR DE XML
CRÉATEUR DE ARBORESCENCE TREENODE À PARTIR DE XML
Information sur la source
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);
}
}
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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à j'ai créé une arborescence de fichiers qui fonctionne plutôt bien (un JTree). Mais mon problè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 = <
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
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|