Existe-t-il une application ou une bibliothèque en Java qui me permettra de convertir un CSV
fichier de données en XML
fichier?
Les XML
balises seraient fournies via éventuellement la première ligne contenant les en-têtes de colonne.
java
xml
csv
data-conversion
Un Salim
la source
la source
Réponses:
Peut-être que cela pourrait aider: JSefa
Vous pouvez lire le fichier CSV avec cet outil et le sérialiser au format XML.
la source
Comme les autres ci-dessus, je ne connais pas de moyen en une seule étape de le faire, mais si vous êtes prêt à utiliser des bibliothèques externes très simples, je suggérerais:
OpenCsv pour l'analyse CSV (petit, simple, fiable et facile à utiliser)
Xstream pour analyser / sérialiser XML (très très facile à utiliser, et créer un XML entièrement lisible par l'homme)
En utilisant les mêmes exemples de données que ci-dessus, le code ressemblerait à ceci:
Produisant le résultat suivant: (Xstream permet un réglage très fin du résultat ...)
la source
Je sais que vous avez demandé Java, mais cela me semble être une tâche bien adaptée à un langage de script. Voici une solution rapide (très simple) écrite en Groovy.
test.csv
csvtoxml.groovy
Écrit le code XML suivant dans stdout:
Cependant, le code effectue une analyse très simple (sans tenir compte des virgules entre guillemets ou échappées) et ne tient pas compte des éventuelles données absentes.
la source
J'ai un framework Open Source pour travailler avec CSV et les fichiers plats en général. Cela vaut peut-être la peine de regarder: JFileHelpers .
Avec cette boîte à outils, vous pouvez écrire du code en utilisant des beans, comme:
puis analysez simplement vos fichiers texte en utilisant:
Et vous aurez une collection d'objets analysés.
J'espère que cela pourra aider!
la source
Cette solution n'a pas besoin de bibliothèques CSV ou XML et, je sais, elle ne gère pas les caractères illégaux et les problèmes d'encodage, mais cela pourrait également vous intéresser, à condition que votre entrée CSV ne casse pas les règles mentionnées ci-dessus.
Attention: vous ne devez pas utiliser ce code à moins que vous ne sachiez ce que vous faites ou que vous n'ayez pas la possibilité d'utiliser une autre bibliothèque (possible dans certains projets bureaucratiques) ... Utilisez un StringBuffer pour les environnements d'exécution plus anciens ...
Alors on y va:
L'entrée test.csv (volée dans une autre réponse sur cette page):
La sortie résultante:
la source
La grande différence est que JSefa apporte, c'est qu'il peut sérialiser vos objets java en fichiers CSV / XML / etc et peut les désérialiser en objets java. Et il est alimenté par des annotations qui vous donnent beaucoup de contrôle sur la sortie.
JFileHelpers semble également intéressant.
la source
Je ne comprends pas pourquoi vous voudriez faire ça. Cela ressemble presque au codage culte du fret.
La conversion d'un fichier CSV en XML n'ajoute aucune valeur. Votre programme lit déjà le fichier CSV, donc prétendre que vous avez besoin de XML ne fonctionne pas.
D'un autre côté, lire le fichier CSV, faire quelque chose avec les valeurs, puis sérialiser en XML a du sens (enfin, autant utiliser XML peut avoir du sens ...;)) mais vous auriez supposément déjà un moyen de sérialisation vers XML.
la source
Vous pouvez le faire exceptionnellement facilement en utilisant Groovy, et le code est très lisible.
Fondamentalement, la variable de texte sera écrite
contacts.xml
pour chaque ligne ducontactData.csv
, et le tableau de champs contient chaque colonne.la source
Vous pouvez utiliser XSLT . Google et vous trouverez quelques exemples, par exemple CSV en XML. Si vous utilisez XSLT, vous pouvez ensuite convertir le XML dans le format de votre choix.
la source
Il existe également une bonne bibliothèque ServingXML de Daniel Parker, qui est capable de convertir presque tous les formats de texte brut en XML et inversement.
L'exemple pour votre cas peut être trouvé ici : Il utilise l'en-tête du champ dans le fichier CSV comme nom d'élément XML.
la source
Il n'y a rien à ma connaissance qui puisse faire cela sans que vous n'écriviez au moins un peu de code ... Vous aurez besoin de 2 bibliothèques séparées:
L'analyseur CSV que je recommanderais (à moins que vous ne souhaitiez vous amuser un peu à écrire votre propre analyseur CSV) est OpenCSV (Un projet SourceForge pour l'analyse des données CSV)
Le framework de sérialisation XML devrait être quelque chose qui peut évoluer au cas où vous voudriez transformer un fichier CSV volumineux (ou énorme) en XML: Ma recommandation est le Sun Java Streaming XML Parser Framework (voir ici ) qui permet l'analyse par extraction ET la sérialisation.
la source
Autant que je sache, il n'y a pas de bibliothèque prête à l'emploi pour le faire pour vous, mais la production d'un outil capable de traduire de CSV en XML ne devrait vous obliger qu'à écrire un analyseur CSV brut et à connecter JDOM (ou votre bibliothèque XML Java de choix) avec du code de colle.
la source
La famille de processeurs Jackson a des backends pour plusieurs formats de données, pas seulement JSON. Cela inclut à la fois les backends XML ( https://github.com/FasterXML/jackson-dataformat-xml ) et CSV ( https://github.com/FasterXML/jackson-dataformat-csv/ ).
La conversion reposerait sur la lecture de l'entrée avec le backend CSV, l'écriture à l'aide du backend XML. C'est plus simple à faire si vous avez (ou pouvez définir) un POJO pour les entrées par ligne (CSV). Ce n'est pas une exigence stricte, car le contenu de CSV peut également être lu "non typé" (une séquence de
String
tableaux), mais nécessite un peu plus de travail sur la sortie XML.Pour le côté XML, vous auriez besoin d'un objet racine wrapper pour contenir un tableau ou
List
d'objets à sérialiser.la source
J'ai eu le même problème et j'avais besoin d'une application pour convertir un fichier CSV en fichier XML pour l'un de mes projets, mais je n'ai rien trouvé de gratuit et d'assez bon sur le net, j'ai donc codé ma propre application Java Swing CSVtoXML.
Il est disponible sur mon site Web ICI . J'espère que cela vous aidera.
Sinon, vous pouvez facilement coder le vôtre comme je l'ai fait; Le code source est à l'intérieur du fichier jar, alors modifiez-le selon vos besoins s'il ne répond pas à vos besoins.
la source
Pour la partie CSV, vous pouvez utiliser ma petite bibliothèque open source
la source
Cela peut être une solution trop basique ou limitée, mais vous ne pourriez pas faire un
String.split()
sur chaque ligne du fichier, en vous souvenant du tableau de résultats de la première ligne pour générer le XML, et simplement cracher les données du tableau de chaque ligne avec le XML approprié éléments remplissant chaque itération d'une boucle?la source