Anfänger - Problem mit dem schreiben eines XML files

Tinobee

Mitglied
hallo leute,

ich stecke in einer brennenden klemme und bräuchte eure hilfe. hier mal der code, bevor ich schreibe, was los ist.
PHP:
public class XmlWriter {

	private DocumentBuilderFactory factory;
	private DocumentBuilder builder;
	private Document doc;
	
	public XmlWriter(){
		
	}
	
	public void saveProjectToFile( String[]project ) throws Exception {
		
		// nur zum testen, ob überhaupt was rein kommt
		System.out.println("\nArray " + project + " wurde übernommen und hat den Inhalt:\n");
		for(int i = 0; i < project.length; i++){
            System.out.println("Wert von Item " + i + ": " + project[i]);
        } ;
		
		factory = DocumentBuilderFactory.newInstance();
		builder = factory.newDocumentBuilder();
		doc = builder.newDocument();
		
		Element projectName = doc.createElement("Project");
		doc.appendChild(projectName);
		projectName.setAttribute("title", project[0]);

		Element estDuration = doc.createElement("Duration");
		projectName.appendChild(estDuration);
		estDuration.setTextContent(project[8]);
		
		File file = new File(project[0] + ".xml");
		FileOutputStream fout = new FileOutputStream(file);
		TransformerFactory transfac = TransformerFactory.newInstance();
		Transformer transformer = transfac.newTransformer();
		transformer.transform(new DOMSource(doc), new StreamResult(fout));
	}

	public void arrayListToFile(String targetFile, String targetPath) {
		for(String[] tmpArray : GUI.arrayList) {
			try {
			   saveProjectToFile(tmpArray);

			   // das tmpArray wird an die obige Methode
                           // saveProjectToFile( String[]project ) übergeben, 
                           // welche die Werte des übergebenen Arrays nehmen 
                           // und in ein XML-Doc schreiben soll, was seltsamerweise
                           // nur klappt, wenn man die obige Methode direkt aus 
                           // einem anderen Ort der Applikation heraus aufruft
                           // dass die Arrays aber alle der Reihe nach 
                           // reinkommen und gelesen werden, beweist die 
                           // Kommandozeilenausgabe

			} catch (Exception e) {
				// TODO: handle exception
			}

	}
	
}

ich stecke was xml anbelangt noch total in den kinderschuhen und bin froh, dass das was ich habe, überhaupt einigermaßen läuft. ich kriege es einfach nicht hin, dass die übergebenen arrays der reihe nach in das .xml file geschrieben werden. rufe ich diese anweisung direkt auf von einem treeItem, bekomme ich für die werte des treeItems mit seinen children zb. folgendes .xml file erstellt.
HTML:
  <?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
- <Project title="MeinProjekt">
     <Name>myName</Name> 
     <Surname>mySurname</Surname> 
     <Deparment>atHome</Deparment> 
     <Position>homie</Position> 
     <Duration>5 days</Duration> 
  </Project>
jedes weitere array soll unter jedem Projekt-Endtag angehängt werden. es wird jedoch nicht nur nix angehängt sondern erst garkeine datei erzeugt. das kapier ich nicht. könnt ihr mir bitte die augen öffen?

gruß, tino
 
Zuletzt bearbeitet:
Hi.

An das Dokument kannst du nach dem Project End-Tag nichts mehr anhängen, da ein wohlgeformtes XML Dokument genau eine Wurzel hat.

Allerdings sieht es so aus, als ob du nicht wirklich ein Problem mit XML hast, sondern mit der programmtechnischen Umsetzung in Java. Da wäre das Java Forum wohl geeigneter.

Wozu soll die XML Datei eigentlich gut sein? Soll diese später von jemand bearbeitet werden, oder willst du die Daten einfach nur serialisieren/deserialisieren? Dann solltest du dir mal die Klasse XMLEncoder anschauen.

Gruß
 
die datei soll projekte speichern und dem programm wieder zur verfügung stellen, so dass man dran weiter arbeiten kann und die geupdatete version dann wieder speichert.
 
die datei soll projekte speichern und dem programm wieder zur verfügung stellen, so dass man dran weiter arbeiten kann und die geupdatete version dann wieder speichert.
M.a.W: du möchtest die Datenstruktur serialisieren und später wieder deserialisieren. Das ist bei einer ArrayList kein Problem, da diese das Interface Serializable implementiert. Falls die Elemente in der ArrayList auch serialisierbar sind, dann sollte es so klappen:
Java:
XMLEncoder e = new XMLEncoder(
                          new BufferedOutputStream(
                              new FileOutputStream("Test.xml")));
       e.writeObject(GUI.arrayList);
       e.close();
Das hat allerdings alles nichts mit XML zu tun, sondern ist ein Java Problem...

Gruß
 
danke, das hat mir sehr geholfen. das schreiben und einlesen funktioniert jetzt prima, wenngleich der inhalt sehr viel umfangreicher visualisiert wird, als wenn man den klassischen weg über die fabrik geht. dennoch danke, das verschafft mir einen erheblichen zeitgewinn! :)
 
Zurück