Tags in XML Datei mit Java erstellen

Hallo zusammen :)

Ich hab zur Zeit ein Vorpraktikum und stecke bei einer Aufgabe fest: Eine CSV Datei in Java einlesen, dann in eine Java Swing Tabelle umwandeln, dann die Tabelle in eine XML Datei umwandeln wenn man auf ein Button klickt, dann Tags für die Spalten in der XML Datei erstellen.
Ich finde, dass diese Aufgabe sehr schwer ist, besonders für jmdn, der ein Praktikum sucht, weil mir das alles neu ist, aber ich hab es bis XML Datei geschafft; bei den Tags komme ich nicht weiter.
Ich wäre für jede Hilfe sehr dankbar.
Java:
import java.awt.*;
import java.awt.event.*;
import java.beans.XMLEncoder;
import java.io.*;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.metadata.IIOMetadataNode;
import javax.swing.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

class Ubuntu extends JDialog {

    int lineNumber = 0;
    String path = "ubuntu.csv";
    String line = "";
    JTable table;
    JFrame frame;
    JButton toXML;
    XMLEncoder encoder;
    private Object data;

    public Ubuntu() {}
    public void init() throws IOException, ParserConfigurationException, SAXException{

        frame = new JFrame();
        frame.setTitle("UBUNTU");
        String[] columnNames = {"", "", "", "", "", "", "", ""};


        BufferedReader br = new BufferedReader(new FileReader(path));

        List<List<String>> values = new ArrayList<>();
        while ((line = br.readLine()) != null) {
            ArrayList<String> row = new ArrayList<>();
            lineNumber++;
            for (String s : line.split(",")) {
                row.add(s);
            }
            values.add(row);
        }
        String[][] data = new String[values.size()][];

        for (int i = 0; i < values.size(); i++) {
            data[i] = new String[values.get(i).size() + 2];
            for (int j = 0; j < values.get(i).size(); j++) {
                data[i][j] = values.get(i).get(j);
            }
        }
        table = new JTable(data, columnNames);
        table.setFillsViewportHeight(true);
        table.setBounds(30, 40, 200, 300);

        JScrollPane scrollPane = new JScrollPane(table);
        frame.add(scrollPane);
        frame.setSize(800, 600);
        toXML = new JButton("To XML");
        toXML.setSize(100, 30);

        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder;
        docBuilder = docBuilderFactory.newDocumentBuilder();

        String xmlData = "";
        xmlData = xmlData + "<?xml version=\"1.0\"?>\n" + "<data>\n";


        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < 8; j++) {
                xmlData = xmlData + data[i][j] + "\n";
            }
        }
        xmlData = xmlData + "</data>";



        Document doc = docBuilder.parse(new InputSource(new StringReader(xmlData)));

        NodeList nodes = doc.getElementsByTagName("string");
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            doc.renameNode(node, null, "teeeeeeeest");
            Element element = (Element) node;
            element.setAttribute("string", "test");
            element.setAttribute("string", "test2");
            element.setAttribute("string", "test3");
        }


//        for (int i = 0; i < data.length; i++) {
//            for (int j = 0; j < 8; j++) {
////                Element newNode = doc.createElement(data[i][j]);
////
////                doc.appendChild(newNode);
////                Node y = (Node) doc.getElementsByTagName(columnNames[j]);
////                doc.replaceChild(newNode, y);
//                Element x = null;
//                Element newNode = doc.createElement("test1");
//                Element newTitle = doc.createElement("test2");
//                Text newText = doc.createTextNode("test3");
//
//
//                newTitle.appendChild(newText);
//
//                newNode.appendChild(newTitle);
//
//                Element y=doc.getElementsByTagName("book")[0];
//
//                x.replaceChild(newNode,y);
//            }
//        }

        toXML.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource().equals(toXML)){
                    try {
                        encoder = new XMLEncoder(new FileOutputStream("ubuntuInXML.xml"));
                        encoder.writeObject(data);
                        encoder.close();
                    } catch (FileNotFoundException e1) {
                        e1.printStackTrace();
                    }
                    JOptionPane.showMessageDialog(frame, "XML Datei erfolgreich erstellt! Endlich :-)");
                }
            }
        });
        frame.setVisible(true);
        frame.add(toXML, BorderLayout.SOUTH);
    }

    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
        Ubuntu u = new Ubuntu();
        u.init();
    }

}
 
K

kneitzel

Gast
Also erst einmal: Alles so in eine Klasse zu quetschen macht es Dir selbst extrem schwer. Und damit wird es auch für uns sehr schwer, Dir zu helfen.

Mein Ratschlag wäre, das wenigstens etwas aufzuteilen:
- Eine Klasse für einen Datensatz. Keine Ahnung, was da in der csv Datei steht, aber wenn Du da ein sauberes Model hast, dann wird alles einfacher. Die Serialisierung in eine XML Datei geht dann fast ganz ohne Code.
- Dann hast Du eine DAO Klasse - die liest dann z.B. die CSV Datei ein und kann von mir aus auch den Export in eine XML Datei beinhalten (Wobei ich das in zwei Klassen aufteile .. sind halt zwei unterschiedliche Dinge.)

Damit wird die aktuelle Klasse schon deutlich übersichtlicher. Aber die Table wird dann über ein TableModel gemacht. Damit hast Du das Bindeglied zwischen UI und Model. Siehe dazu z.B. https://docs.oracle.com/javase/tutorial/uiswing/components/table.html

Ob man nun noch weiter geht und UI etwas mehr aufdröseln will in Controller und View ist dabei jetzt fast nebensächlich. Die oben genannten Dinge dürften alles deutlich vereinfachen, so dass Du nun eine kleine Hand voll Klassen hast, die alle ihre klare Aufgabe haben und die das Projekt übersichtlich hält.

Und Dein Problem mit der XML Datei dürfte dann erledigt sein, denn Du schreibst die Daten wirklich so einfach mit einem Encoder ohne da irgend was manuell aufzubauen.

Ich kenne Deine zeitlichen Vorgaben nicht, aber das wäre halt die Herangehensweise, die ich vorschlagen würde.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
H Checkstyle Bedeutung von Tags XML & JSON 2
E Einzelne Tags der context.xml lesen XML & JSON 1
E Leere Tags in XML-Output in langer Form XML & JSON 3
4 ID3 Tags, Datenhaltung alternativen XML & JSON 2
N Jsoup: PHP-Tags bereiten Probleme? XML & JSON 2
T Möchte JSP Code in Attribut eines HTML Tags hinein generieren XML & JSON 3
ruutaiokwu regex auf xml-tags... XML & JSON 3
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
C Kompletten Inhalt eines Tags ausgeben XML & JSON 2
M Ersetzen zwischen tags XML & JSON 2
P "Formatierungs-Tags" parsen XML & JSON 3
M TextContent eines XML-Elements enthält HTML-Tags . was nun XML & JSON 2
X Einzelne Tags rausnehmen aus einem großen XML-file XML & JSON 4
Saxony Zeilenumbruch bei XML-Tags XML & JSON 4
D Mit Sax Inhalt zwischen Tags in Vector speichern XML & JSON 4
A XML Tags als PHP String XML & JSON 4
G einzelne tags mit jdom auslesen XML & JSON 4
T Newbie Frage. CSS Stylesheet einlesen und suchen nach Tags XML & JSON 6
M Speichern von "Tags" in XML XML & JSON 2
A [JAXB] unmarshaller mit unbekannten tags XML & JSON 4
M Inhalt zwischen Tags mit Sax XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M XML Datei heapspace erreicht XML & JSON 3
M Große Datei auslesen/in dieser suchen XML & JSON 2
S Konforme XML Datei über XSD erstellen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
M XML Datei drucken XML & JSON 8
T Daten aus Programm in XML Datei speichern XML & JSON 2
D XSD Datei erstellen XML & JSON 4
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
G txt. Datei in xml datei konvertieren XML & JSON 21
K XML Datei in ein Java package „einbinden" XML & JSON 3
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
C if-Abfrage mit Datei Variable aus XML-Datei XML & JSON 2
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
sylo DOM Document in XML Datei schreiben XML & JSON 5
F XML Datei in Java einlesen XML & JSON 4
J Objektstruktur aus XML-Datei erzeugen XML & JSON 21
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
H xml-Datei mit Attributen einlesen XML & JSON 3
A XML-Datei: Ab wann kritische Größe erreicht? XML & JSON 4
multiholle XML Datei elegant verarbeiten XML & JSON 14
M XMI-Datei auslesen XML & JSON 4
T Ließt keine XML Datei XML & JSON 2
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
J XML-Datei ein Array einlesen XML & JSON 10
M xml - datei erstellen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben