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

Eclipse Java Discussion :

écrire dans un fichier XML


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut écrire dans un fichier XML
    Bonjour,

    J'ai une méthode qui est censée me rajouté un noeud 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
    29
    30
    31
    32
    33
    public void add(Question q)
    	{
    		doc=new Document();
    		Element question = new Element("question");
    		question.setAttribute("id",String.valueOf(q.getIdentifiant())); // <-- écriture de l'identifiant unique de la question
    		question.setAttribute("group",q.getGroup());
    		Element title = new Element("title"); // <-- mise à jour du titre
    		question=question.addContent(title);
    		title.setText(q.getTitle());
    		Element choice = new Element("choice"); // <-- écriture des choix possibles
    		question = question.addContent(choice);
    		choice.setAttribute("type",q.getChoiceType());
    		for(int i=0;i<q.getPossibilities().size();i++) 
    		{
    			Element poss = new Element("option");
    			poss.setText((String) q.getPossibilities().get(i));
    			choice = choice.addContent(poss);
    		}
    		XMLOutputter out = new XMLOutputter();
    		try
    		{
    			out.output(doc, new FileWriter(this.file));
    		}
    		catch(JDOMException e1)
    		{
    			System.out.println("Document mal formé");
    		}
    		catch(IOException e2)
    		{
    			System.out.println("Fichier non trouvé");
    		}
     
    	}
    eclipse (mon EDI) me demande de la mettre le type de retour en booléen sauf que cette méthode ne retourne rien elle ne fait qu'écrire dans un fichier.
    pourquuoi ?

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Peux tu montrer le fichier complet ? plus précisément, la déclaration de la classe.
    Est ce que add redéfinit une autre méthode (dans une classe parente) ?

    Et c'est quoi le message exact + où exactement ?


  3. #3
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    oui le add redéfinit une méthode de ArrayList
    la voilci
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    package com.datalion.exogema.application;
     
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.io.FileWriter;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.XMLOutputter;
     
    public class Questions extends ArrayList<Question> // <- je fais un extends juste pour avoir accès à la méthode size() et get() que j'arrive pas à coder
    {
    	private static final long serialVersionUID = 4922214803517916496L;
    	private SAXBuilder sxb;
    	private Document doc;
    	private Element root;
    	private String file;
    	public Questions (String file)
    	{
    		this.file=file;
    		this.sxb=new SAXBuilder();
    		try
    		{
    			this.doc=sxb.build(new FileInputStream(file));	
    		}
    		catch(JDOMException e1)
    		{
    			e1.printStackTrace();
    			System.out.println("Document mal formé");
    		}
    		catch(IOException e2)
    		{
    			e2.printStackTrace();
    			System.out.println("Fichier non trouvé");
    		}	
    	}
    	public void add(Question q)
    	{
    		doc=new Document();
    		Element question = new Element("question");
    		question.setAttribute("id",String.valueOf(q.getIdentifiant())); // <-- écriture de l'identifiant unique de la question
    		question.setAttribute("group",q.getGroup());
    		Element title = new Element("title"); // <-- mise à jour du titre
    		question=question.addContent(title);
    		title.setText(q.getTitle());
    		Element choice = new Element("choice"); // <-- écriture des choix possibles
    		question = question.addContent(choice);
    		choice.setAttribute("type",q.getChoiceType());
    		for(int i=0;i<q.getPossibilities().size();i++) 
    		{
    			Element poss = new Element("option");
    			poss.setText((String) q.getPossibilities().get(i));
    			choice = choice.addContent(poss);
    		}
    		XMLOutputter out = new XMLOutputter();
    		try
    		{
    			out.output(doc, new FileWriter(this.file));
    		}
    		catch(JDOMException e1)
    		{
    			System.out.println("Document mal formé");
    		}
    		catch(IOException e2)
    		{
    			System.out.println("Fichier non trouvé");
    		}
     
    	}
    	public Question getQuestionPerId(int id)
    	{
    		Question q = null;
    		for(int i=0;i<=this.size();i++)
    		{
    			Question current = (Question) get(i);
    			if(current.getIdentifiant()==id)
    			{
    				q=current;
    			}
    		}
    		return q;
    	}
    	public ArrayList<Question> getQuestionsPerTitle(String title)
    	{
    		ArrayList<Question> q = new ArrayList<Question>();
    		for(int i=0;i<=this.size();i++)
    		{
    			Question current = (Question) get(i);
    			if(current.getTitle().equals(title))
    			{
    				q.add(current);
    			}
    		}
    		return q;
    	}
    	public ArrayList<Question> getQuestionPerGroup(String title)
    	{
    		ArrayList<Question> q = new ArrayList<Question>();
    		for(int i=0;i<=this.size();i++)
    		{
    			Question current = (Question) get(i);
    			if(current.getTitle().equals(title))
    			{
    				q.add(current);
    			}
    		}
    		return q;
    	}
    	public int size()
    	{
    		return super.size();
    	}
    	public Question get(int id)
    	{
    		return (Question) super.get(id);
    	}
    }
    le message d'erreur exact est : The return type is imcompatible with ArrayList<Question>.add(Question)

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bah je crois que t'as ta réponse: la méthode add de List retourne un int, et comme tu es en train de la redéfinir, tu es obligé de retourner un int.
    C'est donc naturel qu'eclipse te génère une erreur de compilation.

    Tu peux consulter la FAQ Java à propos de la redéfinition.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    oki

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Par défaut
    T'aurai pas oublier (enfin je dis ça par hasard ...) d'ajouter le root element a ton doc... ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/01/2008, 21h48
  2. écrire dans un fichier xml
    Par isaglada dans le forum VBScript
    Réponses: 13
    Dernier message: 28/03/2007, 09h44
  3. [XML] [PHP-Flash] écrire dans un fichier XML via un fichier PHP
    Par morgiane dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 24/11/2006, 12h05
  4. [DOM XML] Comment écrire dans un fichier XML ?
    Par morgiane dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/11/2006, 11h32
  5. [Rech. Comp.] Lire et écrire dans des fichiers XML
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/08/2005, 20h48

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