Salve ragazzi,
oggi sto affrontando un programmino relativamente semplice che però mi ha messo in difficoltà. Spiego meglio:
io ho una classe Finestra, che ha al suo interno due JTextField, chiamate Path e Nome. in pratica io devo prendere il contenuto di queste due text e scriverle su un xml. uso JDOM. cliccando su un bottone "ok" avviene la scrittura su xml e poi mi si presenta la domanda se voglio inserire un nuovo record. quindi pulisco le text e sono pronte all'uso. le riempio di nuovo e quando vado a cliccare su ok, in pratica mi riscrive l'xml e mi cancella il record precedente!!. a me servirebbe invece creare una nuova riga, mantenendo la riga precedente!! vi posto il codice, sono sicuro che è una bazzecola ma mi sfugge!!
codice:import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.*; import org.jdom.*; import org.jdom.output.XMLOutputter; import java.io.IOException; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; /** * * @author Nicholas */ class CreaXML extends JFrame{ FileLog flog=new FileLog(); private JLabel pathFile = new JLabel("Path:"); private JTextField txtPath = new JTextField(10); private JLabel nomeFile = new JLabel("Nome:"); private JTextField txtFile = new JTextField(10); private JButton ok = new JButton("Ok"); private JButton annulla = new JButton("Annulla"); private JFrame frame = new JFrame(); private boolean primoElemento=true; FileOutputStream out; XMLOutputter serializer; CreaXML(){ frame.setTitle("Crea Properties"); frame.setLocation(0, 0); frame.setLayout(new GridLayout(3,2,10,10)); frame.add(pathFile); frame.add(txtPath); frame.add(nomeFile); frame.add(txtFile); frame.add(ok); frame.add(annulla); //frame.setUndecorated(true); frame.pack(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e){ System.exit(0); } }); annulla.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean bRet=false; //creo elemento Programmazione Element elementoRadice= new Element("ElencoFile"); //creo elemento Titolo Element elementoTitolo=new Element("File"); //setto il valore con quello presto da path elementoTitolo.setAttribute("PathFile",txtPath.getText()); //setto il valore con quello preso da nome elementoTitolo.setAttribute("NomeFile",txtFile.getText()); //aggiungo a elemento radice elemento titolo elementoRadice.addContent(elementoTitolo); //creo document Document doc = new Document(elementoRadice); try { FileOutputStream out = new FileOutputStream("Elementi.xml"); XMLOutputter serializer = new XMLOutputter(); serializer.output(doc, out); out.flush(); out.close(); bRet=true; //se arriva qui ha scritto correttamente flog.scriviLog(0,"Elementi scritto correttamente"); //System.out.println("XML TITOLI CREATO"); } catch (IOException ex) { //System.out.println("ERRORE XML TITOLI"); bRet=false; flog.scriviLog(1,ex.getMessage()+" Elementi"); return; } if(bRet==true){ //mi chiede se voglio inserire un nuovo elemento String nextEle=JOptionPane.showInputDialog("XML Elementi scritto correttamente. \n Inserire un altro elemento? (y/n)"); //se si if(nextEle.equalsIgnoreCase("y")){ //chiude vecchia finestra frame.dispose(); //riparte new CreaXML(); } else{ //altrimenti chiude finestra frame.dispose(); //lancia altro programma CopiaFile cf=new CopiaFile(); cf.connettiFTP(); } } else{ JOptionPane.showMessageDialog(rootPane, "Errore: Impossibile scrivere XML Elementi"); System.exit(0); } } }); } public static void main(String[]args) throws IOException, JDOMException, TransformerConfigurationException, TransformerException, SQLException{ new CreaXML(); } }

Rispondi quotando