|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
vorrei scrivere cosi ma non posso accederci direttamente....teoricamente mi dovrei creare una nuova rubrica che non lo posso fare in questo caso...
|
|
|
|
|
|
#22 |
|
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
|
|
|
|
|
|
#23 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
che intendi??
|
|
|
|
|
|
#24 |
|
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
Non ho presente il codice completo ma presumo che da qualche parte hai un riferimento alla rubrica. Ecco, prendi questo riferimento e passalo alla classe che aggiunge i nominativi (in teoria dovrebbe essere la rubrica stessa che si aggiunge i nominativi...)
|
|
|
|
|
|
#25 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
a ecco ora ti ho capito...ho portato tutto nella classe rubrica (effettivamente è una proprietà di rubrica...)non da errori ma quando vado a fare il debug il programma si ferma quando mi va a scrivere tutti i nominativi esattamente in questo punto:
Codice PHP:
Codice PHP:
|
|
|
|
|
|
#26 | |
|
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
Quote:
Codice PHP:
|
|
|
|
|
|
|
#27 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
gli ho cambiato io il nome perchè "indirizzo" l'ho gia utilizzato prima x l'imput del mio nominativo..ovvero qui:
Codice PHP:
|
|
|
|
|
|
#28 |
|
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
mmm, usi ogni volta itr.next() all'interno del ciclo?
Cosi' intedo: Codice:
while (itr.hasNext()) {
indirizzo.setText(itr.next().getindirizzo());
nome.setText(itr.next().getnome());
cognome.setText(itr.next().getcognome());
}
Devi fare una cosa del genere: Codice:
while (itr.hasNext()) {
Nominativo n = itr.next();
indirizzo.setText(n.getindirizzo());
nome.setText(n.getnome());
cognome.setText(n.getcognome());
}
|
|
|
|
|
|
#29 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
si ma io mi devo ritrovare nome cognome ecc...in un ordine preciso non mi è ancora chiaro il tuo ragionamento comunque...
Codice PHP:
Codice PHP:
|
|
|
|
|
|
#30 | ||
|
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
Quote:
Quote:
Ultima modifica di afsdfdlecosdfsfdcco : 04-01-2008 alle 11:07. |
||
|
|
|
|
|
#31 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
ho risolto cosi':
Codice PHP:
|
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Credo che ci siano un paio di errori. Così dovrebbe funzionare meglio:
Codice:
Iterator<Nominativo> itr = getnominativi().iterator();
while (itr.hasNext())
{
Nominativo q = itr.next();
Element nominativo1 = new Element("nominativo");//creo il nominativo da inserire
Element nome1 = new Element("nome");nome1.setText(q.getnome());
Element cognome1 = new Element("cognome");cognome1.setText(q.getcognome());
Element indirizzo1 = new Element("indirizzo");indirizzo1.setText(q.getindirizzo());
Element telefono1 = new Element("telefono");telefono1.setText(q.gettelefono());
Element affinita1 = new Element("affinita");affinita1.setText(q.getaffinita());
nominativo1.addContent(nome1);
nominativo1.addContent(cognome1);
nominativo1.addContent(indirizzo1);
nominativo1.addContent(telefono1);
nominativo1.addContent(affinita1);
// E qui? Cosa ti serve costruire "nominativo1" se poi non lo usi?
}
rubrica.addContent(nominativo); //chiudo il mio nominativo
return new Document(rubrica);
Non ho ancora capito a che ti serva creare un "nominativo1" che poi non usi mai.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN Ultima modifica di Mixmar : 05-01-2008 alle 14:19. |
|
|
|
|
|
#33 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
nominativo1 serve solo per scrivere tutti i nominativi presenti nel vettore e "creare" il documento da scrivere....cosa intendi?
|
|
|
|
|
|
#34 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
per motivi "scolastici" ho trasformato il mio array list in vector e come mi è stato consigliato aggiungo un nominativo nel vettore e poi vado a scrivere il vettore..quindi ho semplificato il tutto cosi':
Codice PHP:
Codice PHP:
|
|
|
|
|
|
#35 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Innanzitutto ti devo delle scuse: avevo letto male all'inizio e credevo che tu usassi il package org.w3c.dom (che si trova nelle librerie standard), non sapevo neanche dell'esistenza di questo JDOM, forse perchè ho cominciato a lavorare con XML un po' più tardi...
La butto lì, a occhio, può anche non funzionare ma: Codice:
Document documrubrica(Nominativo nuovoNominativo) throws IOException, JDOMException {
Element rubrica = new Element("rubrica");
for(Enumeration en = getNominativi().elements(); en.hasMoreElements(); ) {
// Visto che c'è un metodo "clone()", sfruttiamolo!
rubrica.addContent(((Element)en.nextElement()).clone());
}
// Adesso aggiungo il mio nominativo
rubrica.addContent(nuovoNominativo);
return new Document(rubrica); // Fine
}
Comunque: perchè non passare a org.w3c.dom?
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
#36 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
org.w3c.dom??non so che dirti...è piu facile da usare??ora mi spiego meglio questo metodo che sto creando mi prepara un documento che verrà scritto da una classe apposta.questo è il tipico documento xml:
Codice PHP:
|
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
|
Per scrivere usa questo metodo:
Codice:
private void writeXML() {
try {
new XMLOutputter().output(doc, System.out);
new XMLOutputter().output(doc, new FileWriter(xmlDOC));
} catch(IOException ioe) {
ioe.printStackTrace();
System.exit(1);
}
}
String xmlDOC = "nomefile.xml" Document doc = new SAXBuilder().build(xmlDOC); Non so come tu abbia implementato il tutto, comunque con il riferimento "doc" puoi effettuare tutte le operazioni che ti servono sul documento ottenendo la radice col metodo .getRootElement(). Quando scrivi con l'XMLOutputter inoltre vengono scritti soltanto i cambiamenti realmente effettuati e non viene riscritto il file da 0 (ho testato personalmente questa particolarità per motivi prestazionali).
__________________
:: Le mie trattative :: LOL >> http://www.hwupgrade.it/forum/showth...9#post31430289 |
|
|
|
|
|
#38 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
guarda forse non ci capiamo io dal mio vettore devo estrapolare tutti i miei nominativi (col metodo getnominativi ecc...)e preparare un documento....
Codice PHP:
Codice PHP:
|
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
|
Guarda sarebbe stato preferibile se avessi postato l'intera classe commentando qua e la. A leggere tutti i pezzi di codice che hai postato mi è venuto il mal di testa e ho rinunciato.
Eccoti un esempio di come vanno trattati i documenti in Jdom, prendi spunto e vedrai che tutto funzionerà: Codice:
// vari import
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.ListIterator;
// jdom import
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class DocParser {
private Element radice = null;
private Document doc = null;
private static String xmlDOC;
private List listaRecord;
public DocParser(String nomefile) throws JDOMException, IOException {
xmlDOC = new String(nomefile);
// fa il parse del documento e ottiene la radice
doc = new SAXBuilder().build(xmlDOC);
radice = doc.getRootElement();
// crea una lista dei record nel documento
listaRecord = radice.getChildren("record");
}
public void insertRecord(Record record) {
// inserisce un record nel documento
// ogni record è un bean con i seguenti attributi: id (univoco, non modificabile), name
Element recordEle = new Element("record");
Element temp = new Element("id");
temp.setText(record.getID());
recordEle.addContent(temp);
recordEle.addContent("\n\t\t");
temp = new Element("name");
temp.setText(record.getName());
recordEle.addContent(temp);
recordEle.addContent("\n\t\t");
radice.addContent("\t");
radice.addContent(recordEle);
radice.addContent("\n");
writeXML();
}
public void modifyRecord(Record record) {
// modifica gli attributi di un singolo record nel documento dopo averlo cercato
ListIterator recordIterator = listaRecord.listIterator();
while(recordIterator.hasNext()) {
Element temp = (Element) recordIterator.next();
if( Integer.parseInt(temp.getChildText("id")) == record.getID() ) {
Element child = temp.getChild("name");
child.setText(record.getName());
break;
}
}
writeXML();
}
public void deleteRecord(int ID) {
// elimina un record e resetta tutti gli ID
ListIterator recordIterator = listaRecord.listIterator();
int i = 1;
Element toErase = null;
while(recordIterator.hasNext()) {
Element temp = (Element) recordIterator.next();
if( Integer.parseInt(temp.getChildText("id")) == ID ) {
toErase = temp;
continue;
}
(temp.getChild("id")).setText("" + i);
i++;
}
radice.removeContent(toErase);
writeXML();
}
private void writeXML() {
// scrive il documento su file
try {
new XMLOutputter().output(doc, System.out);
new XMLOutputter().output(doc, new FileWriter(xmlDOC));
} catch(IOException ioe) {
ioe.printStackTrace();
System.exit(1);
}
}
}
__________________
:: Le mie trattative :: LOL >> http://www.hwupgrade.it/forum/showth...9#post31430289 |
|
|
|
|
|
#40 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 277
|
)
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:46.












)








