Gibt es eine vorhandene Anwendung oder Bibliothek in Java, mit der ich eine Datendatei in eine CSV
Datei konvertieren XML
kann?
Die XML
Tags würden möglicherweise durch die erste Zeile bereitgestellt, die Spaltenüberschriften enthält.
java
xml
csv
data-conversion
Ein Salim
quelle
quelle
Antworten:
Vielleicht könnte das helfen: JSefa
Mit diesem Tool können Sie CSV-Dateien lesen und in XML serialisieren.
quelle
Wie die anderen oben, kenne ich keinen Ein-Schritt-Weg, um dies zu tun, aber wenn Sie bereit sind, sehr einfache externe Bibliotheken zu verwenden, würde ich vorschlagen:
OpenCsv zum Parsen von CSV (klein, einfach, zuverlässig und benutzerfreundlich )
Xstream zum Parsen / Serialisieren von XML (sehr, sehr einfach zu verwenden und vollständig lesbare XML- Dateien zu erstellen)
Unter Verwendung der gleichen Beispieldaten wie oben würde der Code folgendermaßen aussehen:
Das folgende Ergebnis wird erzeugt: (Xstream ermöglicht eine sehr feine Abstimmung des Ergebnisses ...)
quelle
Ich weiß, dass Sie nach Java gefragt haben, aber das scheint mir eine Aufgabe zu sein, die für eine Skriptsprache gut geeignet ist. Hier ist eine schnelle (sehr einfache) Lösung, die in Groovy geschrieben wurde.
test.csv
csvtoxml.groovy
Schreibt das folgende XML in stdout:
Der Code führt jedoch eine sehr einfache Analyse durch (ohne Anführungszeichen oder Kommas) und berücksichtigt möglicherweise keine fehlenden Daten.
quelle
Ich habe ein OpenSource-Framework für die Arbeit mit CSV und Flatfiles im Allgemeinen. Vielleicht lohnt es sich zu schauen: JFileHelpers .
Mit diesem Toolkit können Sie Code mit Beans schreiben, wie zum Beispiel:
und analysieren Sie dann einfach Ihre Textdateien mit:
Und Sie haben eine Sammlung von analysierten Objekten.
Hoffentlich hilft das!
quelle
Diese Lösung benötigt keine CSV- oder XML-Bibliotheken und behandelt, wie ich weiß, keine illegalen Zeichen und Codierungsprobleme. Sie könnten jedoch auch daran interessiert sein, vorausgesetzt, Ihre CSV-Eingabe verstößt nicht gegen die oben genannten Regeln.
Beachtung: Sie sollten diesen Code nur verwenden, wenn Sie wissen, was Sie tun, oder wenn Sie nicht die Möglichkeit haben, eine weitere Bibliothek zu verwenden (in einigen bürokratischen Projekten möglich) ... Verwenden Sie einen StringBuffer für ältere Laufzeitumgebungen ...
Auf geht's:
Die Eingabe test.csv (gestohlen aus einer anderen Antwort auf dieser Seite):
Die resultierende Ausgabe:
quelle
Der große Unterschied, den JSefa einbringt, besteht darin, dass es Ihre Java-Objekte in CSV / XML / etc-Dateien serialisieren und wieder in Java-Objekte deserialisieren kann. Und es wird von Anmerkungen gesteuert, die Ihnen viel Kontrolle über die Ausgabe geben.
JFileHelpers sieht auch interessant aus.
quelle
Ich verstehe nicht, warum Sie das tun möchten. Es klingt fast wie eine Frachtkultcodierung.
Das Konvertieren einer CSV-Datei in XML bringt keinen Mehrwert. Ihr Programm liest bereits die CSV-Datei, sodass die Argumentation, dass Sie XML benötigen, nicht funktioniert.
Auf der anderen Seite ist es sinnvoll , die CSV-Datei zu lesen, etwas mit den Werten zu tun und dann in XML zu serialisieren (so viel wie die Verwendung von XML sinnvoll sein kann ...;)), aber Sie hätten angeblich bereits ein Mittel dazu Serialisierung in XML.
quelle
Sie können dies außergewöhnlich einfach mit Groovy tun, und der Code ist sehr gut lesbar.
Grundsätzlich wird die Textvariable
contacts.xml
für jede Zeile imcontactData.csv
Feld geschrieben , und das Feldarray enthält jede Spalte.quelle
Sie könnten XSLT verwenden . Google it und Sie werden einige Beispiele finden, z. B. CSV in XML. Wenn Sie XSLT verwenden , können Sie das XML in das gewünschte Format konvertieren.
quelle
Es gibt auch eine gute Bibliothek ServingXML von Daniel Parker, die fast jedes Text-Format in XML und zurück konvertieren kann.
Das Beispiel für Ihren Fall finden Sie hier : Als XML-Elementname wird die Feldüberschrift in der CSV-Datei verwendet.
quelle
Es gibt nichts, von dem ich weiß, dass es dies tun kann, ohne dass Sie zumindest ein wenig Code schreiben ... Sie benötigen 2 separate Bibliotheken:
Der CSV-Parser, den ich empfehlen würde (es sei denn, Sie möchten ein bisschen Spaß beim Schreiben Ihres eigenen CSV-Parsers haben), ist OpenCSV (ein SourceForge-Projekt zum Parsen von CSV-Daten).
Das XML-Serialisierungsframework sollte skalierbar sein, wenn Sie große (oder große) CSV-Dateien in XML umwandeln möchten: Meine Empfehlung ist das Sun Java Streaming XML-Parser-Framework (siehe hier ), das Pull-Parsing UND Serialisierung ermöglicht.
quelle
Soweit ich weiß, gibt es keine vorgefertigte Bibliothek, die dies für Sie erledigt. Um jedoch ein Tool zu erstellen, mit dem von CSV nach XML übersetzt werden kann, müssen Sie lediglich einen groben CSV-Parser schreiben und JDOM (oder Ihre XML-Java-Bibliothek von) anschließen Wahl) mit etwas Klebercode.
quelle
Die Jackson-Prozessorfamilie verfügt über Backends für mehrere Datenformate, nicht nur für JSON. Dies umfasst sowohl XML- Backends ( https://github.com/FasterXML/jackson-dataformat-xml ) als auch CSV- Backends ( https://github.com/FasterXML/jackson-dataformat-csv/ ).
Die Konvertierung basiert auf dem Lesen von Eingaben mit CSV-Backend und dem Schreiben mit XML-Backend. Dies ist am einfachsten, wenn Sie ein POJO für CSV-Einträge (Per Row) haben (oder definieren können). Dies ist keine strikte Anforderung, da Inhalte aus CSV auch "untypisiert" gelesen werden können (eine Folge von
String
Arrays), aber etwas mehr Arbeit an der XML-Ausgabe erfordern.Für die XML-Seite benötigen Sie ein Wrapper-Stammobjekt, das ein Array enthält, oder
List
Objekte, die serialisiert werden sollen.quelle
Ich hatte das gleiche Problem und brauchte eine Anwendung, um eine CSV-Datei für eines meiner Projekte in eine XML-Datei zu konvertieren, fand aber nichts Freies und Gutes im Netz, sodass ich meine eigene Java Swing CSVtoXML-Anwendung codierte.
Es ist auf meiner Website HIER verfügbar . Hoffe es wird dir helfen.
Wenn nicht, können Sie ganz einfach Ihre eigenen codieren, wie ich es getan habe. Der Quellcode befindet sich in der JAR-Datei. Ändern Sie ihn daher nach Bedarf, wenn er Ihre Anforderungen nicht erfüllt.
quelle
Für den CSV-Teil können Sie meine kleine Open-Source-Bibliothek verwenden
quelle
Dies mag für eine Lösung zu einfach oder zu begrenzt sein, aber Sie können nicht
String.split()
in jeder Zeile der Datei ein Ergebnisarray der ersten Zeile speichern, um das XML zu generieren, und einfach die Array-Daten jeder Zeile mit dem richtigen XML ausspucken Elemente, die jede Iteration einer Schleife auffüllen?quelle