Moin, ma ne Frage ich möchte eine eingelesene CSV datei als XML Datei ausgeben, soweit so gut, nur kommt folgendes bei heraus(Zuordnungen stimmen) aber Hierarchie nicht:
[XML]<?xml version='1.0' encoding='UTF-8'?>
<Person>
<Vorname>
Muster
</Vorname>
<Name>
Mustermann
</Name>
<Geb.Datum>
30.03.2007
</Geb.Datum>
<Ort>
Ismaning
</Ort>
</Person>[/XML]
Und es sollte halt alles ein bisschen eingerückt sein, ihr wisst schon
Meine Klassen(2):
1.:
_______________________________
2. Klasse:
Hoffe es kann einer helfen. :rtfm:
[XML]<?xml version='1.0' encoding='UTF-8'?>
<Person>
<Vorname>
Muster
</Vorname>
<Name>
Mustermann
</Name>
<Geb.Datum>
30.03.2007
</Geb.Datum>
<Ort>
Ismaning
</Ort>
</Person>[/XML]
Und es sollte halt alles ein bisschen eingerückt sein, ihr wisst schon
Meine Klassen(2):
1.:
Java:
package test;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class Main
{
static Document document;
String[] list;
String[] head;
public static void main(String string[])
{
Main demo = new Main("ConvertTest.xml");
demo.createXMLBasic();
demo.loadCSV("ConvertTest.csv");
demo.speichern("ConvertTest.xml");
}
public Main(String string)
{
newXMLFile(string);
}
public void newXMLFile(String string)
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
catch (ParserConfigurationException pce)
{
pce.printStackTrace();
}
catch (Throwable t)
{
t.printStackTrace();
}
}
public void createXMLBasic()
{
Element root = document.createElement("Person");
document.appendChild(root);
}
public void loadCSV(String string)
{
// Methode zum Laden von CSV
String zeile = "";
try
{
FileReader Eingabestrom = new FileReader(string);
BufferedReader input = new BufferedReader(Eingabestrom);
if((zeile = input.readLine()) != null){
head = zeile.split(";");
while ((zeile = input.readLine()) != null)
{
list = makeArrayForXML(zeile);
addData(list);
}
}
input.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void addData(String[] data)
{
Element root = document.getDocumentElement();
try
{
for(int i =0; i<head.length ;i++)
{
Element element = document.createElement(head[i]);
root.appendChild(element);
if(!data[i].equals("nullString"))
element.appendChild(document.createTextNode(data[i]));
}
}
catch (DOMException ex)
{
ex.printStackTrace();
}
}
private String[] makeArrayForXML (String zeile){
if(zeile.startsWith(";")){
zeile = ";"+zeile;
}
for(int i = 0; i < 2; i++){
zeile = zeile.replaceAll(";;", ";nullString;");
}
return zeile.split(";");
}
public void speichern(String string)
{
try
{
XMLOutputterNeu outputter = new XMLOutputterNeu();
outputter.output(document,new FileOutputStream(string));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
_______________________________
2. Klasse:
Java:
import java.io.*;
import org.w3c.dom.*;
public class XMLOutputterNeu
{
public void output(Document document, OutputStream out)
{
PrintWriter writer = new PrintWriter(out);
travers(document, writer);
writer.close();
}
private void travers(Node node, PrintWriter out)
{
switch (node.getNodeType())
{
case Document.DOCUMENT_NODE:
NodeList list = node.getChildNodes();
out.println("<?xml version='1.0' encoding='UTF-8'?>");
for (int i = 0; i < list.getLength(); i++)
{
travers(list.item(i), out);
}
break;
case Document.ELEMENT_NODE:
list = node.getChildNodes();
out.println("<" + node.getNodeName() + ">");
for (int i = 0; i < list.getLength(); i++)
{
travers(list.item(i), out);
}
out.println("</" + node.getNodeName() + ">");
break;
case Document.TEXT_NODE:
out.println(node.getNodeValue());
break;
}
}
}
Hoffe es kann einer helfen. :rtfm: