misterxxitalia
20-12-2007, 10:33
ciao a tutti sono nuovo nel mondo della programmazione in java....per motivi scolastici devo realizzare un progetto di una una rubrica.i nominativi (nome cognome ecc...) devono essere caricati e scritti in xml utilizzando le librerie jdom.ora sto cercando di completare la fase di caricamento attraverso dei vettori queste sono le mie classi scritte:
la classe nominativo:
import java.util.*;
public class Nominativo {
private String nome;
private String cognome;
private String indirizzo;
private String telefono;
private String affinita;
public Nominativo (String nome, String cognome, String indirizzo, String telefono, String affinita)
{
this.nome = nome;
this.cognome = cognome;
this.indirizzo = indirizzo;
this.telefono = telefono;
this.affinita = affinita;
}
}
questa è la classe rubrica:
import java.util.*;
class Rubrica
{
private ArrayList<Nominativo> nominativi;
public Rubrica ()
{
nominativi = new ArrayList<Nominativo> ();
}
public void addNominativo (Nominativo n)
{
nominativi.add (n);
}
}
questa è la classe per il caricamento:
import java.util.*;
import java.io.File; // Gestione defi files
import java.io.IOException; // Errori di I/O
import java.io.PrintStream; // Flusso per la stampa
import java.util.Iterator; // Strumento per la scanione di liste
import java.util.List; // Lista di oggetti
import org.jdom.Document; // Documento XML
import org.jdom.Element; // Singolo elemento XML
import org.jdom.JDOMException; // Errori sulla gestione XML
import org.jdom.input.SAXBuilder; // Costruttore di documenti XML
import org.jdom.output.XMLOutputter; // Scrittore di documenti XML
public class XMLRead {
public static void main(String[] args) throws IOException, JDOMException {
//public void errore() throws IOException, JDOMException {//gestione errore....da rivedere!!
Document documento = null;
SAXBuilder builder = new SAXBuilder();// Costruzione di un documeto SAX
//try
//{
documento = builder.build(new File("rubrica.xml"));// Lettura del file XML
//}
//catch (JDOMException ex)
//{
//System.err.println(ex);
//}
//catch (IOException ex)
//{
//System.err.println(ex);
//}
Element rubrica = documento.getRootElement();// Posizionamento sulla root (rubrica)
List nominativi = rubrica.getChildren("nominativo"); // Costruzione della lista con tag "nominativo"
Iterator i = nominativi.iterator();// Uso di un iteratore per scandire la lista
while (i.hasNext()) {// Controllo dell'esistenza di altri elementi nella lista
Element nominativo = (Element) i.next();// Elemento successivo della lista
Rubrica r = new Rubrica ();
Nominativo n1 = new Nominativo (""+nominativo.getChild("nome").getTextTrim(),""+nominativo.getChild("cognome").getTextTrim(),""+nominativo.getChild("indirizzo").getTextTrim(),""+nominativo.getChild("telefono").getTextTrim(),""+nominativo.getChild("affinita").getTextTrim());
r.addNominativo (n1);
System.out.println(n1);
}}}
e questo è il file xml da caricare:
<?xml version="1.0" encoding="UTF-8"?>
<rubrica>
−
<nominativo>
<nome>Paolo</nome>
<cognome>Rossi</cognome>
<indirizzo>via Marconi 14, Milano</indirizzo>
<telefono>0212345678</telefono>
<affinita>amicone</affinita>
</nominativo>
−
<nominativo>
<nome>Maria</nome>
<cognome>Bianchi</cognome>
<indirizzo>via Garibaldi 94/A, Torino</indirizzo>
<telefono>01112045678</telefono>
<affinita>conoscente</affinita>
</nominativo>
</rubrica>
in questo file ci sono due nominativi (ce ne potrebbero essere anche 100000)
se io scrivo questo xo...
Nominativo n1 = new Nominativo (""+nominativo.getChild("nome").getTextTrim(),""+nominativo.getChild("cognome").getTextTrim(),""+nominativo.getChild("indirizzo").getTextTrim(),""+nominativo.getChild("telefono").getTextTrim(),""+nominativo.getChild("affinita").getTextTrim());
r.addNominativo (n1);
tutte le propietà (sia di paolo che di maria) finiranno in un nominativo chiamato "n1" quello che voglio io è che le propietà di mario finiscano in "n1" maria in "n2" un tizio che andrò ad aggiungere in "n4" insomma per ogni persona che andrò ad aggiungere lui mi deve creare un n differente!!chi mi sa aiutare??grazie!!
la classe nominativo:
import java.util.*;
public class Nominativo {
private String nome;
private String cognome;
private String indirizzo;
private String telefono;
private String affinita;
public Nominativo (String nome, String cognome, String indirizzo, String telefono, String affinita)
{
this.nome = nome;
this.cognome = cognome;
this.indirizzo = indirizzo;
this.telefono = telefono;
this.affinita = affinita;
}
}
questa è la classe rubrica:
import java.util.*;
class Rubrica
{
private ArrayList<Nominativo> nominativi;
public Rubrica ()
{
nominativi = new ArrayList<Nominativo> ();
}
public void addNominativo (Nominativo n)
{
nominativi.add (n);
}
}
questa è la classe per il caricamento:
import java.util.*;
import java.io.File; // Gestione defi files
import java.io.IOException; // Errori di I/O
import java.io.PrintStream; // Flusso per la stampa
import java.util.Iterator; // Strumento per la scanione di liste
import java.util.List; // Lista di oggetti
import org.jdom.Document; // Documento XML
import org.jdom.Element; // Singolo elemento XML
import org.jdom.JDOMException; // Errori sulla gestione XML
import org.jdom.input.SAXBuilder; // Costruttore di documenti XML
import org.jdom.output.XMLOutputter; // Scrittore di documenti XML
public class XMLRead {
public static void main(String[] args) throws IOException, JDOMException {
//public void errore() throws IOException, JDOMException {//gestione errore....da rivedere!!
Document documento = null;
SAXBuilder builder = new SAXBuilder();// Costruzione di un documeto SAX
//try
//{
documento = builder.build(new File("rubrica.xml"));// Lettura del file XML
//}
//catch (JDOMException ex)
//{
//System.err.println(ex);
//}
//catch (IOException ex)
//{
//System.err.println(ex);
//}
Element rubrica = documento.getRootElement();// Posizionamento sulla root (rubrica)
List nominativi = rubrica.getChildren("nominativo"); // Costruzione della lista con tag "nominativo"
Iterator i = nominativi.iterator();// Uso di un iteratore per scandire la lista
while (i.hasNext()) {// Controllo dell'esistenza di altri elementi nella lista
Element nominativo = (Element) i.next();// Elemento successivo della lista
Rubrica r = new Rubrica ();
Nominativo n1 = new Nominativo (""+nominativo.getChild("nome").getTextTrim(),""+nominativo.getChild("cognome").getTextTrim(),""+nominativo.getChild("indirizzo").getTextTrim(),""+nominativo.getChild("telefono").getTextTrim(),""+nominativo.getChild("affinita").getTextTrim());
r.addNominativo (n1);
System.out.println(n1);
}}}
e questo è il file xml da caricare:
<?xml version="1.0" encoding="UTF-8"?>
<rubrica>
−
<nominativo>
<nome>Paolo</nome>
<cognome>Rossi</cognome>
<indirizzo>via Marconi 14, Milano</indirizzo>
<telefono>0212345678</telefono>
<affinita>amicone</affinita>
</nominativo>
−
<nominativo>
<nome>Maria</nome>
<cognome>Bianchi</cognome>
<indirizzo>via Garibaldi 94/A, Torino</indirizzo>
<telefono>01112045678</telefono>
<affinita>conoscente</affinita>
</nominativo>
</rubrica>
in questo file ci sono due nominativi (ce ne potrebbero essere anche 100000)
se io scrivo questo xo...
Nominativo n1 = new Nominativo (""+nominativo.getChild("nome").getTextTrim(),""+nominativo.getChild("cognome").getTextTrim(),""+nominativo.getChild("indirizzo").getTextTrim(),""+nominativo.getChild("telefono").getTextTrim(),""+nominativo.getChild("affinita").getTextTrim());
r.addNominativo (n1);
tutte le propietà (sia di paolo che di maria) finiranno in un nominativo chiamato "n1" quello che voglio io è che le propietà di mario finiscano in "n1" maria in "n2" un tizio che andrò ad aggiungere in "n4" insomma per ogni persona che andrò ad aggiungere lui mi deve creare un n differente!!chi mi sa aiutare??grazie!!