IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Créer une Jtable a partir d'un fichier XML


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 9
    Points
    9
    Par défaut Créer une Jtable a partir d'un fichier XML
    Bonjour,

    J'essaie depuis un moment de construire un JTable avec un fichier XML... j'ai lu énormément de tutoriel et de façon de faire des table et lire des fichier XML et je retient que Jdom2 pour parser c'est une bonne option.

    J'ai donc un fichier XML assez simple: nommé municipalite.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?xml version="1.0" encoding="UTF-8"?>
    <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="municipalite.xsd" generated="2015-12-10T15:55:34">
    <municipalite>
    <Municipalite>Abénakis  (Sainte-Claire)</Municipalite>
    <Bureau>1232</Bureau>
    <ZoneCP>3 Est</ZoneCP>
    <Information_x0020_concernant_x0020_la_x0020_municipalité>N/A</Information_x0020_concernant_x0020_la_x0020_municipalité>
    </municipalite>
    <municipalite>
    <Municipalite>Abercorn</Municipalite>
    <Bureau>1605</Bureau>
    <ZoneCP>5 Est / Ouest</ZoneCP>
    <Information_x0020_concernant_x0020_la_x0020_municipalité>N/A</Information_x0020_concernant_x0020_la_x0020_municipalité>
    </municipalite>
    <municipalite>
    <Municipalite>Acton Vale</Municipalite>
    <Bureau>1605</Bureau>
    <ZoneCP>6 Nord</ZoneCP>
    <Information_x0020_concernant_x0020_la_x0020_municipalité>Une portion pourrait être couverte par le bureau 1602</Information_x0020_concernant_x0020_la_x0020_municipalité>
    </municipalite>
    <municipalite>
    <Municipalite>Adamsville  (Bromont)</Municipalite>
    <Bureau>1605</Bureau>
    <ZoneCP>5 Ouest</ZoneCP>
    <Information_x0020_concernant_x0020_la_x0020_municipalité>N/A</Information_x0020_concernant_x0020_la_x0020_municipalité>
    </municipalite>
    </dataroot>
    Et j'ai mon Code... qui ouvre le fichier municipalité et qui se nomme StaticTable.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    package TesterConcepts;
    import java.awt.*;
    import java.io.File;
    import java.io.IOException;
    import javax.swing.*;
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
     
    public class StaticTable extends JFrame {
     
    	// constructor that will display a JTable based on elements received as arguments
    	StaticTable(Object[][] obj, String[] header) {
    		super("Static JTable example");
     
    		// JPanel to horl the JTable
    		JPanel panel = new JPanel(new BorderLayout());
    		// constructor of JTable with a fix number of objects
    		JTable table = new JTable(obj, header);
    		panel.add(new JScrollPane(table));
    		add(panel);    // adding panel to frame
    		// and display it
    		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setVisible(true);
    		pack();
    	}
     
     
    	// to run the whole thing
    	public static void main(String[] args) throws JDOMException, IOException {
     
                SAXBuilder builder = new SAXBuilder();
    	  File xmlFile = new File("/Users/Dsptch/Desktop/DGPFxmltxt/municipalite.xml");
              Document document = (Document) builder.build(xmlFile);
    		Element rootNode = document.getRootElement();
    		java.util.List list = rootNode.getChildren("municipalite");
     
    		for (int i = 0; i < list.size(); i++) {
    		   Element node = (Element) list.get(i);
     
    		String[][] rowAndColumn = {
    		{(node.getChildText("Municipalite")), (node.getChildText("Bureau")),(node.getChildText("ZoneCP"))}
                    };		
     
    		// defines the header
    		String[] header = {"Ville", "Bureau Local", "Zone CP"};
     
    // build the GUI
                     StaticTable staticTable = new StaticTable(rowAndColumn, header);
     
    }
    }
    }
    Le problème c'est que je ne sais plus comment disposer tout ça... Quand je vais l'exécution, il fait ce que je lui demande il prend chaque municipalités et les places au bon endroits ect... mais il fait une table pour chaque municipalité au lieux de faire une table avec toutes les municipalités... de quoi faire virer fou car il y a a 2079 dans le xml original

    Une idée ? de mon erreur? Je ne vois plus clair...
    Merci de votre aide!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'erreur est que tu crées la table dans la boucle, alors que tu dois cumuler les différentes lignes et créer une table seulement après la boucle.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    for (int i = 0; i < list.size(); i++) {
    
    		Element node = (Element) list.get(i);
     
    		String[][] rowAndColumn = {
    		{(node.getChildText("Municipalite")), (node.getChildText("Bureau")),(node.getChildText("ZoneCP"))}
                    };		
     
    		// defines the header
    		String[] header = {"Ville", "Bureau Local", "Zone CP"};
     
                    // build the GUI
                     StaticTable staticTable = new StaticTable(rowAndColumn, header);
    
     
    }
    Tout le bloc surligné en jaune est fait autant de fois qu'il y a d'éléments dans list (principe d'une boucle). Par exemple, tu cumules dans une ArrayList, que tu convertis en tableau après la boucle.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 9
    Points
    9
    Par défaut Merci
    Merci,

    tu as tout è fait raison, alors j'ai décidée de revoir ma façon de faire...
    Je construis donc ma table et je le remplis par la suite avec mon code "remasterisé" en lui donnant une méthode pour la remplir...

    Merci de ton aide des gars comme toi c'est important dans un forums comme celui-ci

    Je met mon code pour pas laisser un autre sans réponse
    C'est intéressant de voir que ça fonctionne

    Salutations!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    public void loadListeMunicipalite() {
     
        SAXBuilder builder = new SAXBuilder();
    	  File xmlFile = new File("mon fichier.xml");
     
              Document document = null;
               try {
               document = (Document) builder.build(xmlFile);
               } catch (JDOMException | IOException ex){
                Logger.getLogger(ListeDesMunicipalites.class.getName()).log(Level.SEVERE, null, ex);
               }
     
                     Element rootNode = document.getRootElement();
    		java.util.List list = rootNode.getChildren("municipalite");
     
                    for (int i = 0; i < list.size(); i++) {
    		Element node = (Element) list.get(i);
     
            String ville = (node.getChildText("Municipalite"));
            String Bureau = (node.getChildText("Bureau"));
            String ZCP = (node.getChildText("ZoneCP"));
            String InfoB = (node.getChildText("InfoBureau"));
     
     
     
     
                 DefaultTableModel model1 = (DefaultTableModel) ListeMunicipalite.getModel();
                   model1.addRow(new Object[]{
     
                       ville, Bureau, ZCP,InfoB
                   });
     
                   }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Créer une liste a partir d'un fichier XML
    Par lolo81 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/12/2013, 14h50
  2. Réponses: 4
    Dernier message: 23/06/2008, 16h51
  3. [XSLT] Générer une liste déroulante à partir d'un fichier xml ?
    Par chipster45 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2007, 09h59
  4. [DTD] Créer une DTD à partir d'un fichier XML
    Par laadhar dans le forum Valider
    Réponses: 3
    Dernier message: 11/07/2006, 09h56
  5. générer une interface graphique à partir d'un fichier XML
    Par chaval dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 15/03/2006, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo