XML datei auslesen und als CSV ausgeben



  • Hi,

    ich hab hier mehrere XML dateien die immer gleich aufgebaut sind nur mit anderem inhalt 🙂 da ich feststellen mußte, das Batch nicht das gelbe vom ei ist dachte ich das man relevante informationen aus dieser XML konfortabler mittels java herausziehen kann.

    auszug aus der XML:

    <banklog dtab="" money="200000" otab="" player="Nullbull" rank="1" ts="1203019273000" type="4"/>
          <banklog dtab="" money="0" otab="0" player="Nullbull" rank="1" ts="1203019150000" type="2">
            <item count="1" icon="inv_misc_gem_flamespessarite_02" id="23100" name="Glitzernder Flammenspessarit" qi="2" subtype="orange" type="gems"/>
          </banklog>
    

    die Blöcke wiederholen sich dann halt und ganz oben gibt es dann die üblichen einleitungen für XML etc.

    Rauskommen soll dann sowas wie eine CSV, die kann man ja dann beliebig einlesen in diverse Programme.

    Beispiel:
    200000, Nullbull, 1203019273000, 4
    0, Nullbull, 1203019150000, 2, 1, 23100, Glitzernder Flammenspessarit
    ...

    Hat da wer eine idee wie man das am besten umsetzt?



  • Hi,

    ich hab das jetzt mal ausprobiert aber scheinbar gibt es ein problem mit der formatierung der Datei. der Trim-Befehl entfernt mir nicht die vorstehenden leerzeichen und somit greift
    der vergleich mittels "startsWith2 natürlich nicht. Oder ich weiß nicht warum ich trotzdem die leerzeichen vor der zeile habe.

    import java.io.*;
    import java.lang.*;
    
    public class Bank
            {
             public static void main(String[] args)
                    {
                       try {
                             BufferedReader br  = new BufferedReader(new FileReader("XMLdatei.xml"));
    
                                            String zeile = br.readLine();
    
                                            while (zeile != null) {
                                                            zeile.trim();
                                                            System.out.println(zeile);
                                                            if (zeile.startsWith("<banklog"))
                                                             {
                                                               System.out.println(zeile);
    
                                                             }
    
                                                              zeile = br.readLine();
    
                                                    }
    
                                    } catch (IOException ioe) {
                                            ioe.printStackTrace();
                                    }
                    }
            }
    


  • wie wäre es nen fertigen Parser fürs XML zu nehmen?





  • ist das nicht eigentlich egal mit dem xml parser? ich will ja deren struktur nicht abbilden sondern nur die Datei nach bestimmten dingen absuchen, als wäre es eine TXT.



  • eine xml datei ist auch nicht anders, als eine "txt". nur dass die daten halt in einer struktur vorliegen, die dir diverse DOM parser in eine baumstruktur kloppen können. das parsen ist in java mit 5 zeilen code getan. die gesamte konvertierung in csv kannst damit in ca. 20 zeilen code abhandeln.



  • nagut, aber trotzdem scheint mit dem zeichensatz der txt etwas nicht zu stimmen, zumindestens startet beim normalen auslesen die erster zeile mit irgendwelchen steuerzeichen, die anderen scheinbar auch, da die nicht mit TRIM ihre einrückung verlieren, oder wird ein TAB anders behandelt als ein leerzeichen?



  • auf manchen systemen werden unicode dateien mit steuerzeichen eingeleitet. in jeder zeile erscheint mir ein wenig seltsam. naja, ein grund mehr, einen xml parser zu verwenden 😉



  • http://www.jdom.org/

    das beste paket zum thema



  • steff3 schrieb:

    http://www.jdom.org/

    In diesem Fall ist dies zu schwer, sowohl was die Performance als auch den Code angeht. Hier ist eher SAX zu empfehlen.
    Siehe: http://www.saxproject.org/
    dies wurde bereits in die JDK übernommen: http://java.sun.com/javase/6/docs/api/org/xml/sax/package-summary.html
    und ein obligatorischer wikipedia-link: http://de.wikipedia.org/wiki/Simple_API_for_XML

    Die ursprüngliche site liest sich aber angenehmer.

    Gruß


Anmelden zum Antworten