Ich habe einen XML Exporter, der eine XML Datei machen soll, und dort dann die Sachen rein schreibt. Das Problem ist, dass er nicht die Datei macht, und auch nicht die Sachen rein schreibt (wenn man die Datei manuell erstellt), sondern sie einfach ausgibt. Habe es auch mit cmd probiert und nicht nur mit Eclipse, aber dort habe ich ebenfalls das selbe Problem.
Java
// fuer XML und DOM
import org.w3c.dom.*;
import javax.xml.parsers.*;
//fuer Writer
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Xml_Exporter_Test
{
Document doc = null;
Element author = null;
Element lines = null;
Element title = null;
static public void main(String [] args )
{
XmlDoc XD = new XmlDoc();
XD.doc = XD.neuesDoc();
XD.printDOMTree(XD.doc);
}
public Document neuesDoc()
{
DocumentBuilderFactory docBFac;
DocumentBuilder docBuild;
try
{
docBFac = DocumentBuilderFactory.newInstance();
docBuild = docBFac.newDocumentBuilder();
doc = docBuild.newDocument();
}
catch( Exception e )
{
System.out.println("Dokument konnte nicht erzeugt werden");
}
if (doc != null)
{
Element root = doc.createElement("sonnet");
root.setAttribute("type", "Shakespearean");
author = doc.createElement("author");
Element lastName = doc.createElement("last-name");
lastName.appendChild(doc.createTextNode("Shakespeare"));
author.appendChild(lastName);
Element firstName = doc.createElement("first-name");
firstName.appendChild(doc.createTextNode("William"));
author.appendChild(firstName);
Element nationality = doc.createElement("nationality");
nationality.appendChild(doc.createTextNode("British"));
author.appendChild(nationality);
Element yearOfBirth = doc.createElement("year-of-birth");
yearOfBirth.appendChild(doc.createTextNode("1564"));
author.appendChild(yearOfBirth);
Element yearOfDeath = doc.createElement("year-of-death");
yearOfDeath.appendChild(doc.createTextNode("1616"));
author.appendChild(yearOfDeath);
root.appendChild(author);
title = doc.createElement("title");
title.appendChild(doc.createTextNode("Sonnet 130"));
root.appendChild(title);
lines = doc.createElement("lines");
Element line01 = doc.createElement("line");
line01.appendChild(doc.createTextNode("My mistress' eyes are nothing like the sun,"));
lines.appendChild(line01);
Element line02 = doc.createElement("line");
line02.appendChild(doc.createTextNode("Coral is far more red than her lips red."));
lines.appendChild(line02);
root.appendChild(lines);
doc.appendChild(root);
}
return doc;
}
/** Prints the specified node, recursively. */
public void printDOMTree(Node node ) throws IOException
{
File datei = new File("ausgabe.xml");
FileWriter ausgabeStrom = new FileWriter(datei);
PrintWriter ausgabe = new PrintWriter(ausgabeStrom); // scheibt alles nach System.out
int type = node.getNodeType();
switch (type)
{
// print the document element
case Node.DOCUMENT_NODE:
{
printDOMTree(((Document)node).getDocumentElement() );
break;
}
// print element with attributes
case Node.ELEMENT_NODE:
{
ausgabe.println("<");
ausgabe.print(node.getNodeName());
NamedNodeMap attrs = node.getAttributes();
for (int i = 0; i < attrs.getLength(); i++)
{
Node attr = attrs.item(i);
ausgabe.print(" " + attr.getNodeName() +
"=\"" + attr.getNodeValue() +
"\"");
}
ausgabe.print(">");
NodeList children = node.getChildNodes();
if (children != null)
{
int len = children.getLength();
for (int i = 0; i < len; i++)
ausgabe.println(children.item(i));
}
break;
}
// handle entity reference nodes
case Node.ENTITY_REFERENCE_NODE:
{
ausgabe.print("&");
ausgabe.print(node.getNodeName());
ausgabe.println(";");
break;
}
// print cdata sections
case Node.CDATA_SECTION_NODE:
{
ausgabe.print("<![CDATA[');
ausgabe.print(node.getNodeValue());
ausgabe.println(']]>");
break;
}
// print text
case Node.TEXT_NODE:
{
ausgabe.print(node.getNodeValue());
break;
}
// print processing instruction
case Node.PROCESSING_INSTRUCTION_NODE:
{
ausgabe.println("<?");
ausgabe.print(node.getNodeName());
String data = node.getNodeValue();
{
ausgabe.print(" ");
ausgabe.print(data);
}
ausgabe.println("?>");
break;
}
}
if (type == Node.ELEMENT_NODE)
{
ausgabe.print("</");
ausgabe.print(node.getNodeName());
ausgabe.println('>');
}
ausgabe.close(); // oder ausgabe.flush um Stream offen zu lassen
} //DOMTree(Node, PrintWriter)
}
Alles anzeigen