Czy istnieje aplikacja lub biblioteka w Javie, która pozwoli mi przekonwertować CSV
plik danych na XML
plik?
Te XML
znaczniki będą dostarczane przez ewentualnie pierwszy rząd zawierający nagłówki kolumn.
java
xml
csv
data-conversion
Salim
źródło
źródło
Odpowiedzi:
Może to pomoże: JSefa
Możesz odczytać plik CSV za pomocą tego narzędzia i serializować go do XML.
źródło
Podobnie jak inni powyżej, nie znam żadnego jednostopniowego sposobu, aby to zrobić, ale jeśli jesteś gotowy do korzystania z bardzo prostych bibliotek zewnętrznych, proponuję:
OpenCsv do parsowania CSV (mały, prosty, niezawodny i łatwy w użyciu)
Xstream do analizowania / serializacji XML (bardzo, bardzo łatwy w użyciu i tworzenia w pełni czytelnego dla człowieka xml)
Korzystając z tych samych przykładowych danych co powyżej, kod wyglądałby następująco:
Uzyskanie następującego wyniku: (Xstream umożliwia bardzo dokładne dostrojenie wyniku ...)
źródło
Wiem, że prosiłeś o Javę, ale wydaje mi się to zadanie dobrze dopasowane do języka skryptowego. Oto szybkie (bardzo proste) rozwiązanie napisane w Groovy.
test.csv
csvtoxml.groovy
Zapisuje następujący kod XML na stdout:
Jednak kod wykonuje bardzo prostą analizę (bez uwzględnienia cudzysłowów lub przecinków) i nie uwzględnia ewentualnych braków danych.
źródło
Mam otwarte środowisko do pracy z CSV i ogólnie plikami płaskimi. Może warto zajrzeć : JFileHelpers .
Za pomocą tego zestawu narzędzi możesz pisać kod za pomocą fasoli, takich jak:
a następnie po prostu przeanalizuj pliki tekstowe za pomocą:
Będziesz mieć kolekcję przeanalizowanych obiektów.
Mam nadzieję, że to pomoże!
źródło
To rozwiązanie nie wymaga żadnych bibliotek CSV ani XML i wiem, że nie radzi sobie z żadnymi niedozwolonymi znakami i problemami z kodowaniem, ale może Cię również zainteresować, pod warunkiem, że twoje wejście CSV nie łamie wyżej wymienionych zasad.
Uwaga: nie powinieneś używać tego kodu, chyba że wiesz, co robisz lub nie masz szansy użyć dalszej biblioteki (możliwe w niektórych projektach biurokratycznych) ... Użyj StringBuffer dla starszych środowisk wykonawczych ...
Więc zaczynamy:
Plik wejściowy test.csv (skradziony z innej odpowiedzi na tej stronie):
Wynikowy wynik:
źródło
Największą różnicą jest to, że JSefa umożliwia serializację obiektów java do plików CSV / XML / etc i może deserializować z powrotem do obiektów java. Jest napędzany przez adnotacje, które dają dużą kontrolę nad wynikami.
Ciekawie wygląda również JFileHelpers.
źródło
Nie rozumiem, dlaczego chcesz to zrobić. Brzmi prawie jak kultowe kodowanie cargo.
Konwersja pliku CSV na XML nie dodaje żadnej wartości. Twój program już czyta plik CSV, więc twierdzenie, że potrzebujesz XML, nie działa.
Z drugiej strony, odczytanie pliku CSV, zrobienie czegoś z wartościami, a następnie serializacja do XML ma sens (no cóż, użycie XML może mieć sens ...;)), ale podobno masz już środki na serializacja do XML.
źródło
Możesz to zrobić wyjątkowo łatwo za pomocą Groovy, a kod jest bardzo czytelny.
Zasadniczo zmienna tekstowa zostanie zapisana
contacts.xml
w każdym wierszu wcontactData.csv
, a tablica pól zawiera każdą kolumnę.źródło
Możesz użyć XSLT . Wygoogluj, a znajdziesz kilka przykładów, np. CSV na XML. Jeśli używasz XSLT , możesz następnie przekonwertować XML na dowolny format.
źródło
Jest też dobra biblioteka ServingXML autorstwa Daniela Parkera, która jest w stanie przekonwertować prawie każdy format zwykłego tekstu na XML iz powrotem.
Przykład dla twojego przypadku można znaleźć tutaj : Używa nagłówka pola w pliku CSV jako nazwy elementu XML.
źródło
Nie wiem nic, co mogłoby to zrobić bez ciebie przynajmniej napisania trochę kodu ... Będziesz potrzebował 2 oddzielnych bibliotek:
Parser CSV, który poleciłbym (chyba że chcesz się trochę zabawić, pisząc własny parser CSV) to OpenCSV (projekt SourceForge do analizowania danych CSV)
Struktura serializacji XML powinna być czymś, co można skalować w przypadku, gdy chcesz przekształcić duży (lub ogromny) plik CSV do formatu XML: Moją rekomendacją jest struktura parsera strumieniowego XML strumieniowania XML firmy Sun (patrz tutaj ), która umożliwia analizowanie w trybie pull ORAZ serializację.
źródło
O ile wiem, nie ma gotowej biblioteki, która mogłaby to zrobić za Ciebie, ale stworzenie narzędzia zdolnego do tłumaczenia z CSV na XML powinno wymagać jedynie napisania prostego parsera CSV i podłączenia JDOM (lub biblioteki XML Java w wybór) z kodem kleju.
źródło
Rodzina procesorów Jackson ma zaplecze obsługujące wiele formatów danych, nie tylko JSON. Obejmuje to zarówno backendy XML ( https://github.com/FasterXML/jackson-dataformat-xml ), jak i CSV ( https://github.com/FasterXML/jackson-dataformat-csv/ ).
Konwersja polegałaby na czytaniu danych wejściowych za pomocą zaplecza CSV, pisaniu przy użyciu zaplecza XML. Jest to najłatwiejsze do zrobienia, jeśli masz (lub możesz zdefiniować) POJO dla wpisów na wiersz (CSV). Nie jest to wymaganie ścisłe, ponieważ treść z CSV może być również odczytywana jako „bez typu” (sekwencja
String
tablic), ale wymaga nieco więcej pracy na wyjściu XML.Po stronie XML potrzebujesz obiektu głównego opakowania, aby zawierał tablicę lub
List
obiekty do serializacji.źródło
Miałem ten sam problem i potrzebowałem aplikacji do konwersji pliku CSV na plik XML dla jednego z moich projektów, ale nie znalazłem w sieci nic wolnego i wystarczająco dobrego, więc zakodowałem własną aplikację Java Swing CSVtoXML.
Jest dostępny na mojej stronie TUTAJ . Mam nadzieję, że to ci pomoże.
Jeśli nie, możesz łatwo zaprogramować własne, tak jak ja; Kod źródłowy znajduje się w pliku jar, więc zmodyfikuj go według potrzeb, jeśli nie spełnia Twoich wymagań.
źródło
W przypadku części CSV możesz użyć mojej małej biblioteki open source
źródło
Może to być zbyt proste lub ograniczone rozwiązanie, ale nie mógłbyś zrobić dla
String.split()
każdego wiersza pliku, pamiętając tablicę wyników pierwszego wiersza w celu wygenerowania XML i po prostu wypluć dane tablicowe każdego wiersza odpowiednim XML elementy wypełniające każdą iterację pętli?źródło