tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Akeshihiro
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
251
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Devilness Devilness ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    11
    Guten Abend alle zusammen,

    ich bin gerade dabei ein Programm zu schreiben, was .csv-Dateien auslesen kann und deren Inhalt in .xml-Dateien abspeichert. Das Einzige, was dabei jedoch herauskommt, ist:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><Team/>
    Hier ist der entsprechende Codeteil:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    
    if("newkay".equals(e.getActionCommand())) {
                // Erstellen neuer Datei
                String getVar = input.getText();
                System.out.println(getVar);
                
                String path = "./CSV/" + comboVar;
                System.out.println(path);
                
                String[] ppos;
                String[] pname;
                String[] page;
                String[] pstr;
                String[] pexp;
                String[] ptrain;
                String[] pawp;
                
                int counter;
                
                try {                                           // Datei lesen (.csv)
                    Scanner scan = new Scanner(new File(path));
                    counter = -1;
                    
                    while(scan.hasNextLine()) {
                        scan.nextLine();
                        counter++;
                    }
                    
                    System.out.println(counter);
                    
                    Scanner scanner = new Scanner(new File(path));
                    
                    ppos = new String[counter];
                    pname = new String[counter];
                    page = new String[counter];
                    pstr = new String[counter];
                    pexp = new String[counter];
                    ptrain = new String[counter];
                    pawp = new String[counter];
                    
                    System.out.println(pawp.length);
                    
                    counter = -1;
                    
                    while(scanner.hasNextLine()) {
                        if(counter < 0) {
                            System.out.println("Scanvorgang gestartet.");
                            scanner.nextLine();
                            counter++;
                        } else {
                            String current = scanner.nextLine();
                            String[] splitted = new String[7];
                            
                            splitted = current.split(";");
                            ppos[counter] = splitted[0];
                            page[counter] = splitted[2];
                            pstr[counter] = splitted[3];
                            pexp[counter] = splitted[4];
                            ptrain[counter] = splitted[5];
                            pawp[counter] = splitted[6];
                            
                            System.out.println(splitted[1]);
                            String[] splitted_2 = new String[3];
                            
                            splitted_2 = splitted[1].split("\"");
                            System.out.println(splitted_2[1]);
                            pname[counter] = splitted_2[1];     // Alle Werte in Arrays gelagert
                        }
                    }
                    
                    
                                                                // Datei schreiben (.xml)
                    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
                    
                    //root elements
                    Document doc = docBuilder.newDocument();
                    Element rootElement = doc.createElement("Team");
                    doc.appendChild(rootElement);
     
                    for (int c = 0; c < counter; c++) {
                        //player elements
                        Element player = doc.createElement("Spieler");
                        rootElement.appendChild(player);
                        player.setAttribute("name", pname[c]);
                        player.setAttribute("pos", ppos[c]);
                    
                        for (int d = 0; d < 5; d++) {
                            if(d == 0) {
                                //valueType elements
                                Element valueType = doc.createElement("Werttyp");
                                player.appendChild(valueType);
                                valueType.setAttribute("type", "Alter");
     
                                //lastname elements
                                Element val = doc.createElement("Wert");
                                val.appendChild(doc.createTextNode(page[c]));
                                valueType.appendChild(val);
                            }else if(d == 0) {
                                //valueType elements
                                Element valueType = doc.createElement("Werttyp");
                                player.appendChild(valueType);
                                valueType.setAttribute("type", "Stärke");
     
                                //lastname elements
                                Element val = doc.createElement("Wert");
                                val.appendChild(doc.createTextNode(pstr[c]));
                                valueType.appendChild(val);
                            }else if(d == 0) {
                                //valueType elements
                                Element valueType = doc.createElement("Werttyp");
                                player.appendChild(valueType);
                                valueType.setAttribute("type", "Erfahrung");
     
                                //lastname elements
                                Element val = doc.createElement("Wert");
                                val.appendChild(doc.createTextNode(pexp[c]));
                                valueType.appendChild(val);
                            }else if(d == 0) {
                                //valueType elements
                                Element valueType = doc.createElement("Werttyp");
                                player.appendChild(valueType);
                                valueType.setAttribute("type", "Training");
     
                                //lastname elements
                                Element val = doc.createElement("Wert");
                                val.appendChild(doc.createTextNode(ptrain[c]));
                                valueType.appendChild(val);
                            }else if(d == 0) {
                                //valueType elements
                                Element valueType = doc.createElement("Werttyp");
                                player.appendChild(valueType);
                                valueType.setAttribute("type", "AWP");
     
                                //lastname elements
                                Element val = doc.createElement("Wert");
                                val.appendChild(doc.createTextNode(pawp[c]));
                                valueType.appendChild(val);
                            }
                        }
                    }
     
                    //write the content into xml file
                    TransformerFactory transformerFactory = TransformerFactory.newInstance();
                    Transformer transformer = transformerFactory.newTransformer();
                    DOMSource source = new DOMSource(doc);
                    StreamResult result =  new StreamResult(new File("./XML/"+getVar+".xml"));
                    transformer.transform(source, result);
     
                    System.out.println("Done");
                } catch(FileNotFoundException e2) {
                    e2.printStackTrace();
                } catch(ParserConfigurationException e2){
                    e2.printStackTrace();
                } catch(TransformerException e2){
                    e2.printStackTrace();
                } catch (TransformerFactoryConfigurationError e2) {
                    e2.printStackTrace();
                }
                
                System.out.println("Okay");
                newIntFrame.setVisible(false);
            } else if("can".equals(e.getActionCommand())) {
                // "Schließen" des InFrames
                System.out.println("Cancel");
                newIntFrame.setVisible(false);
            }

    Ich hatte auch schon den Thread hier zu Rate gezogen, aber ich finde den Fehler trotzdem nicht: http://www.tutorials.de/java/179102-...-erzeugen.html

    Das Einlesen der Daten aus der .csv-Datei funktioniert einwandfrei, lediglich das Schreiben will nicht so recht funktionieren...

    Ich wäre sehr froh über jede Art von Hilfe

    Gruß Devilness
     

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Herzlich Willkommen hier im Forum

    Ich kann so auf den ersten Blick keinen Fehler erkennen. Mir ist nur was aufgefallen, nämlich, dass du in der inneren der letzten Schleife bei allen if-Abfragen auf d == 0 prüfst. Ist sicher nicht so gewollt, is mir aber so ins Auge gesprungen.

    Ok, jetzt wo ich genauer drauf schaue, hab ich den Fehler wohl doch gefunden. Laut deiner Datei-Ausgabe wird gar kein Spieler erstellt. Und wenn man dann genauer hinschaut, dann sieht man, dass die Variable counter nicht über den Wert 0 hinaus kommt. Sie wird nur in Zeile 48 erhöht und dannach nie wieder und da sie auf 0 ist, wird die Schleife für die Erstellung der Spieler auch nie wirklich gestartet.

    EDIT:
    Bei der Gelegenheit fällt mir noch was auf. Laut dem Ablauf zählst du zuerst die Anzahl der Zeilen, damit du die Arrays in der richtigen Größe initialisieren kannst. Das Problem dabei ist, das Scanner (vorsicht, kann mich auch irren, aber wäre das der Fall, würde counter bis ins Unendliche zählen), wenn er am Ende einer Datei angelangt ist, nicht wieder an den Anfang springt. Insofern wird auch überhaupt nix eingelesen und der Rest wird somit auch nie ausgeführt, da wie bereits weiter oben erwähnt, die Bedingungen nicht erfüllt sind und die Schleifen nicht anspringen.

    Ich würde es anstatt mit Arrays dann lieber mit Listen lösen und diese auch gleich beim lesen der Zeilen auch befüllen. Dadurch fällt das Counter-Zeug weg, man braucht auf ihn nicht mehr zu achten und das Programm sollte auch richtig arbeiten.
    Geändert von Akeshihiro (18.07.11 um 21:28 Uhr)
    Devilness bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  3. #3
    Devilness Devilness ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    11
    Danke für die Begrüßung

    Und auch vielen Dank, dass du dich so schnell mit meinem Problem befasst hast. Das Problem ist gelöst. Ich hab vllt. schon zu lang dran gesessen und diese Kleinigkeiten sind mir dann nicht mehr aufgefallen...

    Zu deinem EDIT:
    Danke für den Tipp, aber ich bin froh, dass alles so läuft wie ich es will und bevor ich jetzt wieder etwas umschreibe und ich häng dann an einer Stelle, will ich lieber erstmal ein lauffähiges Programm. Später kann ich das Programm ja immernoch verbessern (das wird wahrscheinlich sowieso nötig sein... :] )

    Danke jedenfalls nochmal für deine schnelle Hilfe. Muss ich den Thread jetzt irgendwie als "gelöst" markieren oder so?

    Gruß Devilness
     

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Kein Ding, dafür sind wir ja da. Ja, also oben rechts einmal auf Erledigt klicken, dann sollte da ein Ja zu sehen sein. Damit wissen die anderen dann auch, dass das Problem gelöst wurde. Machen zwar die wenigsten, aber es hilft dennoch bei der Übersicht. Und die User freuen sich immer über ein Dankeschön oder eine Beitragsbewertung (Buttons sind immer unter dem Beitrag zu finden), wenn sie helfen konnten. Ist aber kein Zwang.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 27.12.08, 20:32
  2. WHERE funktioniert nicht richtig
    Von sniffler im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 10.12.07, 21:57
  3. .exe datei funktioniert nicht richtig
    Von roman gebath im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 09.09.07, 21:38
  4. LIKE funktioniert nicht richtig!
    Von EvilDivel im Forum PHP
    Antworten: 16
    Letzter Beitrag: 17.11.04, 19:30
  5. PHP funktioniert nicht richtig
    Von Dommas im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 22.09.04, 23:49

Stichworte