Hallo Leute
Bräuchte dringend mal hilfe. Ich bin dabei Java zu lernen. Ich möchte gerne einen Adressverwaltung schreiben, die Adressen werden in XML abgespeichert.
Sobald ich eine neue Adresse erfasse speichert er zwar in der XML datei aber die bestehende Daten in XML werden mit der neue Daten überschrieben.
Mein Java Code:
Mein XML inhalt:
$
Ich müsste es vorher auslesen und danach wieder abspeichern. Aber kein plan wie ich es machen will, hoffe um unterstützung.
Bräuchte dringend mal hilfe. Ich bin dabei Java zu lernen. Ich möchte gerne einen Adressverwaltung schreiben, die Adressen werden in XML abgespeichert.
Sobald ich eine neue Adresse erfasse speichert er zwar in der XML datei aber die bestehende Daten in XML werden mit der neue Daten überschrieben.
Mein Java Code:
PHP:
package Controller;
import java.io.FileOutputStream;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.xml.bind.JAXBContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartDocument;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import GUI.GUI_add;
public class DateInXML {
private String vorname;
private String nachname;
private String adresse;
private String plz;
private String ort;
private String mail;
private String telefon;
private String fax;
private String homepage;
Vector data;
Vector columns;
public void setDate(JTextField textField, JTextField textField_1,
JTextField textField_2, JTextField textField_3,
JTextField textField_4, JTextField textField_5,
JTextField textField_6, JTextField textField_7,
JTextField textField_8) {
this.vorname = textField.getText();
this.nachname = textField_1.getText();
this.adresse = textField_2.getText();
this.plz = textField_3.getText();
this.ort = textField_4.getText();
this.mail = textField_5.getText();
this.telefon = textField_6.getText();
this.fax = textField_7.getText();
this.homepage = textField_8.getText();
/*
* System.out.println(vorname); System.out.println(nachname);
* System.out.println(adresse); System.out.println(plz);
* System.out.println(ort); System.out.println(mail);
* System.out.println(telefon); System.out.println(fax);
* System.out.println(homepage);
*/
}
public void saveConfig() throws Exception {
// Create a XMLOutputFactory
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
XMLEventWriter eventWriter = outputFactory
.createXMLEventWriter(new FileOutputStream("person.xml"));
// Create a EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
// Create config open tag
StartElement configStartElement = eventFactory.createStartElement("",
"", "Persons");
StartElement configStartElement1 = eventFactory.createStartElement("",
"", "Person");
eventWriter.add(configStartElement);
eventWriter.add(configStartElement1);
eventWriter.add(end);
// Write the different nodes
/*
* createNode(eventWriter, "vorname", vorname); createNode(eventWriter,
* "nachname", nachname); createNode(eventWriter, "adresse", adresse);
* createNode(eventWriter, "plz", plz); createNode(eventWriter, "ort",
* ort); createNode(eventWriter, "mail", mail); createNode(eventWriter,
* "telefon", telefon); createNode(eventWriter, "fax", fax);
* createNode(eventWriter, "homepage", homepage);
*/
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("person.xml");
NodeList nl = doc.getElementsByTagName("Name");
NodeList n2 = doc.getElementsByTagName("Address");
NodeList n3 = doc.getElementsByTagName("ContactNo");
NodeList listOfPersons = doc.getElementsByTagName("Person");
String data1 = "", data2 = "", data3 = "";
data = new Vector();
columns = new Vector();
for (int i = 0; i < listOfPersons.getLength(); i++) {
data1 = nl.item(i).getFirstChild().getNodeValue();
data2 = n2.item(i).getFirstChild().getNodeValue();
data3 = n3.item(i).getFirstChild().getNodeValue();
String line = data1 + " " + data2 + " " + data3;
StringTokenizer st2 = new StringTokenizer(line, " ");
System.out.println();
while (st2.hasMoreTokens())
data.addElement(st2.nextToken());
}
columns.add("");
columns.add("");
columns.add("");
createNode(eventWriter, "Name", vorname);
createNode(eventWriter, "Address", adresse);
createNode(eventWriter, "ContactNo", telefon);
eventWriter.add(end);
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
JOptionPane.showMessageDialog(null, "Eintrag gespeichert");
}
private void createNode(XMLEventWriter eventWriter, String name,
String value) throws XMLStreamException {
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
XMLEvent tab = eventFactory.createDTD("\t");
// Create Start node
StartElement sElement = eventFactory.createStartElement("", "", name);
eventWriter.add(tab);
eventWriter.add(sElement);
// Create Content
Characters characters = eventFactory.createCharacters(value);
eventWriter.add(characters);
// Create End node
EndElement eElement = eventFactory.createEndElement("", "", name);
eventWriter.add(eElement);
eventWriter.add(end);
}
}
Mein XML inhalt:
$
PHP:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Persons>
<Person>
<Name>test1</Name>
<Address>test1</Address>
<ContactNo>111111</ContactNo>
</Person>
<Person>
<Name>test2</Name>
<Address>test2</Address>
<ContactNo>222222</ContactNo>
</Person>
</Persons>
Ich müsste es vorher auslesen und danach wieder abspeichern. Aber kein plan wie ich es machen will, hoffe um unterstützung.