Bonjour
j'utilise JDOM pour mon projet d'info. Ce projet est un client mail, et je gère les comptes mail avec JDOM.
extrait :
Code :
- import org.jdom.*;
- import org.apache.xerces.parsers.DOMParser;
- import org.xml.sax.InputSource;
- import org.jdom.output.*;
- import org.jdom.input.DOMBuilder;
- import java.io.*;
- import javax.swing.*;
- public class GestionComptes2 {
- public void supprimerCompte(int index) {
- DOMParser parser = new DOMParser();
- org.w3c.dom.Document domDoc = null;
- try{
- parser.parse(new InputSource("comptes.xml" ));
- domDoc = parser.getDocument();
- /****************************************/
- //Conversion du document DOM en document JDOM
- DOMBuilder builder = new DOMBuilder();
- org.jdom.Document documentJDOM = builder.build(domDoc);
- /*****************************************/
- GestionComptes gestion = new GestionComptes();
- int numero = gestion.nombreComptes()+index;
- System.out.println("on va enlever le compte : "+(index));
- documentJDOM.getRootElement().removeContent(index);
- /*****************************************/
- // sortie
- XMLOutputter outputter = new XMLOutputter();
- outputter.output(documentJDOM, System.out);
- FileOutputStream sortie = new FileOutputStream("prout.xml" );
- outputter.output(documentJDOM, sortie);
- sortie.flush();
- sortie.close();
- /******************************************/
- JDialog information = new JDialog();
- JPanel information_panel = new JPanel();
- information.setContentPane(information_panel);
- information.pack();
- information.setVisible(true);
- /*******************************************
- MANQUE :
- ----> supprimer effectivmeent le compte
- ----> fermer la fenetre de compte, pour laisser la place au JDialog
- ----> a la fermeture du JDialog, -> reafficher fenetre compte
-
- *********************************************/
- }
- catch (Exception e) {System.out.println(""+e);}
- }
|
tout d'abord, le parseur xerces parse mon fichier "compte.xml".
ensuite, je convertis le document obtenu en document JDOM. Dès lors, je veux bosser avec ce JDOM.
j'implemente une fonction supprimerCompte qui recoit comme argument un entier, qui provient d'une JList dans une autre classe :
Code :
- menu_supprimer.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.out.println("numero selectionne : "+liste_comptes.getSelectedIndex());
- if (liste_comptes.getSelectedIndex() == -1) {
- System.out.println("choisi un compte tocard !" );
- }
- else {
- GestionComptes2 gestion = new GestionComptes2();
- int numero = liste_comptes.getSelectedIndex() +1;
- gestion.supprimerCompte(numero);
- }
- }
- });
|
donc vous voyez qu'a la fin, je lance la fonction supprimerCompte(numero) ;
donc ca se passe comme ca :
dans ma JList, si je selectionne un compte, j'ai un entier associé (de 0 pour le premier à trois pour le troisieme), que j'ai majoré de un pour que ca marche.
voici mon fichier compte.xml :
Code :
- <?xml version="1.0" encoding="UTF-8"?>
- <liste_compte>
- <compte>
- <type>pop</type>
- <nom>perchut2 sur free</nom>
- <identite>Perchut2</identite>
- <adresse>perchut2@free.fr</adresse>
- <serveur_pop>pop3.free.fr</serveur_pop>
- <port_pop>110</port_pop>
- <serveur_smtp>smtp.free.fr</serveur_smtp>
- <port_smtp>25</port_smtp>
- <user>perchut2</user>
- <pass>************</pass>
- </compte><compte>
- <type>pop</type>
- <nom>mathieu</nom>
- <identite>mathieu</identite>
- <adresse>mathieu*******@free.fr</adresse>
- <serveur_pop>pop3.free.fr</serveur_pop>
- <port_pop>110</port_pop>
- <serveur_smtp>smtp.free.fr</serveur_smtp>
- <port_smtp>25</port_smtp>
- <user>mathieu***********</user>
- <pass>********</pass>
- </compte><compte>
- <type>qsdfqsd</type>
- <nom>fsqdf</nom>
- <identite>qsdf</identite>
- <adresse>sqdf</adresse>
- <serveur_pop>sq</serveur_pop>
- <port_pop>dfqsdf</port_pop>
- <serveur_smtp>qsdfq</serveur_smtp>
- <port_smtp>sd</port_smtp>
- <user>fqsdf</user>
- <pass>qsdfq</pass>
- </compte>
- </liste_compte>
|
je precise que les deux premiers comptes ont été ajoutés à la main dans le fichier pendant le developpement, tandis que le troisieme a été ajouté via la fonction :
Code :
- /* crée un compte */
- public void nouveauCompte(String type2,
- String nom2,
- String identite2,
- String adresse2,
- String serveur_pop32,
- String port_pop32,
- String serveur_smtp2,
- String port_smtp2,
- String user2,
- String pass2) {
- int nombre_comptes = 0;
- DOMParser parser = new DOMParser();
- org.w3c.dom.Document domDoc = null;
- try{
- parser.parse(new InputSource("comptes.xml" ));
- domDoc = parser.getDocument();
- /****************************************/
- //Conversion du document DOM en document JDOM
- DOMBuilder builder = new DOMBuilder();
- org.jdom.Document documentJDOM = builder.build(domDoc);
- // sortie
- XMLOutputter outputter = new XMLOutputter();
- outputter.output(documentJDOM, System.out);
- /*****************************************/
- Element compte1 = new Element("compte" );
- Element type1 = new Element("type" );
- type1.setText(type2);
- compte1.addContent(type1);
- Element nom1 = new Element("nom" );
- nom1.setText(nom2);
- compte1.addContent(nom1);
- Element identite1 = new Element("identite" );
- identite1.setText(identite2);
- compte1.addContent(identite1);
- Element adresse1 = new Element("adresse" );
- adresse1.setText(adresse2);
- compte1.addContent(adresse1);
- Element serveur_pop1 = new Element("serveur_pop" );
- serveur_pop1.setText(serveur_pop32);
- compte1.addContent(serveur_pop1);
- Element port_pop31 = new Element("port_pop" );
- port_pop31.setText(port_pop32);
- compte1.addContent(port_pop31);
- Element serveur_smtp1 = new Element("serveur_smtp" );
- serveur_smtp1.setText(serveur_smtp2);
- compte1.addContent(serveur_smtp1);
- Element port_smtp1 = new Element("port_smtp" );
- port_smtp1.setText(port_smtp2);
- compte1.addContent(port_smtp1);
- Element user1 = new Element("user" );
- user1.setText(user2);
- compte1.addContent(user1);
- Element pass1 = new Element("pass" );
- pass1.setText(pass2);
- compte1.addContent(pass1);
- // (documentJDOM est une instance de la classe org.jdom.Document)
- documentJDOM.getRootElement().addContent(compte1);
- FileOutputStream sortie = new FileOutputStream("comptes.xml" );
- outputter.output(documentJDOM, sortie);
- sortie.flush();
- sortie.close();
- }
|
ca m'a rajouté le dernier compte, sans les sauts de ligne (je les ai rajoutés à la mano, je croyais que c'etait le pb
)
et donc à l'appel de ma fonction "supprimerCompte(int)" :
les trois comptes dans la JList sont dans l'ordre :
Perchut2
mathieu*********
qsdfqsd
* si je selectionne le premier compte dans la JList :
l'output est :
numero selectionne : 0
on va enlever le compte : 1
<?xml version="1.0" encoding="UTF-8"?>
<liste_compte>
<compte>
<type>pop</type>
<nom>mathieu*************</nom>
<identite>Mathieu*************</identite>
<adresse>mathieu**************@free.fr</adresse>
<serveur_pop>pop3.free.fr</serveur_pop>
<port_pop>110</port_pop>
<serveur_smtp>smtp.free.fr</serveur_smtp>
<port_smtp>25</port_smtp>
<user>mathieu*************</user>
<pass>************</pass>
</compte>
<compte>
<type>qsdfqsd</type>
<nom>fsqdf</nom>
<identite>qsdf</identite>
<adresse>sqdf</adresse>
<serveur_pop>sq</serveur_pop>
<port_pop>dfqsdf</port_pop>
<serveur_smtp>qsdfq</serveur_smtp>
<port_smtp>sd</port_smtp>
<user>fqsdf</user>
<pass>qsdfq</pass>
</compte>
</liste_compte>
|
si je selectionne le deuxieme :
Code :
- numero selectionne : 1
- on va enlever le compte : 2
- <?xml version="1.0" encoding="UTF-8"?>
- <liste_compte>
- <compte>
- <type>pop</type>
- <nom>perchut2 sur free</nom>
- <identite>Perchut2</identite>
- <adresse>perchut2@free.fr</adresse>
- <serveur_pop>pop3.free.fr</serveur_pop>
- <port_pop>110</port_pop>
- <serveur_smtp>smtp.free.fr</serveur_smtp>
- <port_smtp>25</port_smtp>
- <user>perchut2</user>
- <pass>*************</pass>
- </compte>
- <compte>
- <type>qsdfqsd</type>
- <nom>fsqdf</nom>
- <identite>qsdf</identite>
- <adresse>sqdf</adresse>
- <serveur_pop>sq</serveur_pop>
- <port_pop>dfqsdf</port_pop>
- <serveur_smtp>qsdfq</serveur_smtp>
- <port_smtp>sd</port_smtp>
- <user>fqsdf</user>
- <pass>qsdfq</pass>
- </compte>
- </liste_compte>
|
* si je selectionne le troisieme :
numero selectionne : 2
on va enlever le compte : 3
<?xml version="1.0" encoding="UTF-8"?>
<liste_compte>
<compte>
<type>pop</type>
<nom>perchut2 sur free</nom>
<identite>Perchut2</identite>
<adresse>perchut2@free.fr</adresse>
<serveur_pop>pop3.free.fr</serveur_pop>
<port_pop>110</port_pop>
<serveur_smtp>smtp.free.fr</serveur_smtp>
<port_smtp>25</port_smtp>
<user>perchut2</user>
<pass>*******************</pass>
</compte><compte>
<type>pop</type>
<nom>mathieu************** sur free</nom>
<identite>Mathieu*****************</identite>
<adresse>mathieu************@free.fr</adresse>
<serveur_pop>pop3.free.fr</serveur_pop>
<port_pop>110</port_pop>
<serveur_smtp>smtp.free.fr</serveur_smtp>
<port_smtp>25</port_smtp>
<user>mathieu**********</user>
<pass>*************</pass>
</compte><compte>
<type>qsdfqsd</type>
<nom>fsqdf</nom>
<identite>qsdf</identite>
<adresse>sqdf</adresse>
<serveur_pop>sq</serveur_pop>
<port_pop>dfqsdf</port_pop>
<serveur_smtp>qsdfq</serveur_smtp>
<port_smtp>sd</port_smtp>
<user>fqsdf</user>
<pass>qsdfq</pass>
</compte>
</liste_compte>
|
voilà, je comprends rien... quelqu'un aurait une idée
pour ceux qui auraient décroché, le troisieme compte ne se supprime pas ![[:joce] [:joce]](https://forum-images.hardware.fr/images/perso/joce.gif)
Message édité par perchut2 le 19-05-2004 à 08:39:55