Hy,
ich beschäftige mich jetzt doch schon eine Weile mit folgendem Problem..
Ich habe einen ContactManager programmiert. Dort werden die Contacts in einer LinkedList gespeichert. Nun möchte ich alle Kontake, als xml speichern:
dazu hab ich erste eine Methode toNode() geschrieben, die ein Objekt einliest und ein Node zurückgibt.
Nun möchte ich alle Kontakte in ein Dokument schreiben, leider gelingt mir das nicht, da ich immer nur einen Kontakt schreibe und diesen dann immer überschreibe, d.h. in meiner xml ist immmer nur ein Kontakt.
ich weiß auch an welcher Stelle ich jedes mal überschreibe, aber ich weiß nicht was ich machen muss, damit dies nicht mehr passiert. (Anmerkung: DocumentWriter ist eine Methode die eine Document in ein FIle speichert.
kann mir jemand helfen und sagen, wie ich es schaffe, alle Kontakte in ein document zu schreiben?
ich beschäftige mich jetzt doch schon eine Weile mit folgendem Problem..
Ich habe einen ContactManager programmiert. Dort werden die Contacts in einer LinkedList gespeichert. Nun möchte ich alle Kontake, als xml speichern:
dazu hab ich erste eine Methode toNode() geschrieben, die ein Objekt einliest und ein Node zurückgibt.
Code:
public static Node toNode(Contact contact) {
DocumentBuilderFactory abook = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = abook.newDocumentBuilder();
} catch (ParserConfigurationException e) {
System.out.println("Error!");
}
Document addressbook = docBuilder.newDocument();
Element nodeContact = addressbook.createElement("contact");
addressbook.appendChild(nodeContact);
Element phone = addressbook.createElement("phone");
Text phoneNode = addressbook.createTextNode(contact.phone);
phone.appendChild(phoneNode);
nodeContact.appendChild(phone);
Element name = addressbook.createElement("name");
Text nameNode = addressbook.createTextNode(contact.name);
name.appendChild(nameNode);
nodeContact.appendChild(name);
Element email = addressbook.createElement("email");
Text emailNode = addressbook.createTextNode(contact.getEmail());
email.appendChild(emailNode);
nodeContact.appendChild(email);
Element address = addressbook.createElement("address");
Text addressNode = addressbook.createTextNode(contact.address);
address.appendChild(addressNode);
nodeContact.appendChild(address);
//System.out.println("XML Node " + contact + " | " + nodeContact);
return addressbook;
}
Nun möchte ich alle Kontakte in ein Dokument schreiben, leider gelingt mir das nicht, da ich immer nur einen Kontakt schreibe und diesen dann immer überschreibe, d.h. in meiner xml ist immmer nur ein Kontakt.
Code:
DocumentBuilderFactory abook = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = abook.newDocumentBuilder();
} catch (ParserConfigurationException e1) {
System.out.println("Error!");
}
xmlElements = new LinkedList<Element>();
Document addressbook = docBuilder.newDocument();
Element directory = addressbook.createElement("directory");
addressbook.appendChild(directory);
Node temp = null;
for (int i = 0; i < contacts.size(); i++) {
addressbook = (Document) Contact
.toNode(contacts.get(i));
// Element tmp = (Element) addressbook.getFirstChild();
// addressbook.appendChild(temp);
NodeList list = addressbook.getElementsByTagName("*");
Element element = (Element) list.item(0);
System.out.println(i + element.getNodeName());
xmlElements.add(element);
// System.out.println(xmlElements);
}
addressbook.appendChild(xmlElements.get(0));
DocumentWriter.write(addressbook, file);
ich weiß auch an welcher Stelle ich jedes mal überschreibe, aber ich weiß nicht was ich machen muss, damit dies nicht mehr passiert. (Anmerkung: DocumentWriter ist eine Methode die eine Document in ein FIle speichert.
kann mir jemand helfen und sagen, wie ich es schaffe, alle Kontakte in ein document zu schreiben?