Jak przekonwertować plik CSV na XML?
Czy jest jakieś oprogramowanie dla Ubuntu?
Jak przekonwertować plik CSV na XML?
Czy jest jakieś oprogramowanie dla Ubuntu?
Odpowiedzi:
Na stronie internetowej społeczności dotyczącej konwersji znajduje się link do narzędzia wiersza polecenia o nazwie csv2xml . Ponieważ nie jest zachowane, możesz wybrać inną opcję.
Wspomniano także o narzędziu Java o nazwie csv2xml (ostrzeżenie: strona internetowa jest w języku niemieckim) oraz narzędziu wiersza poleceń o nazwie ff-extractor .
Link zawiera również odniesienia do Python, Perl, PHP, XSLT, ale oznacza to, że musisz samodzielnie kodować konwerter.
Kiedy znasz format csv
pliku i strukturę, której potrzebujesz w xml
pliku, dość łatwo jest utworzyć skrypt, który może obsłużyć konwersję.
Weź plik simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Możesz utworzyć następujący xml
plik:
<?xml version="1.0"?>
<Customers>
<Customer>
<Name>Jack</Name>
<Age>35</Age>
<Country>United States</Country>
</Customer>
<Customer>
<Name>Jill</Name>
<Age>22</Age>
<Country>United Kingdom</Country>
</Customer>
</Customers>
Za pomocą następującego skryptu:
#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
echo ' <Customer>' >> $file_out
echo ' <Name>'${arry[0]}'</Name>' >> $file_out
echo ' <Age>'${arry[1]}'</Age>' >> $file_out
echo ' <Country>'${arry[2]}'</Country>' >> $file_out
echo ' </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out
Nawet jeśli nigdy wcześniej nie kodowałeś, myślę, że powinno to być łatwe w użyciu i modyfikacji. Plik jest odczytywany linia po linii w while
pętli.
IFS
jest wewnętrznym specyfikatorem pola. IFS=$','
Oświadcza, że wartość separatora pól jest przecinek. Jest to standard dla pliku CSV, ale można go zmienić w razie potrzeby, aby dopasować format pliku wejściowego.
-r
Argument read
polecenia informuje go traktować żadnych backslashy w pliku jako część danych, a nie jako uciec na poniższym szczególnym charakterze.
-a arry
Argumentem umieszcza każdą kolumnę pliku do tablicy (nazwie arry
). Kolumny w tym przykładzie to nazwa, wiek, kraj. Innymi słowy wartości między przecinkami. Tak więc każda kolumna w wierszu jest przechowywana w tablicy.
Następnie potrzebny tekst xml
jest po prostu zawijany wokół wartości, a xml
linia jest dołączana do pliku wyjściowego za pomocą echo
.
while IFS=$',' read -r -a arry
, jest przydatna dla innej. Dzięki.
"Somename, Jack"
miejscu Jack
pliku wejściowego?
Dość przyjaznym dla użytkownika (tzn. Łatwym w użyciu dla wielu osób takim jak ja) rozwiązaniem problemu konwersji CSV na XML jest użycie ładnego wieloplatformowego edytora XML z wbudowaną tą funkcją. (Używałem go zarówno pod Ubuntu, jak i Mac OSX 10.10.5; ma także plik wykonywalny dla systemu Windows).
Jak wspomniano, jest to edytor XML, ale zawiera „import” CSV-na-XML (i Excel-na-XML) w menu głównym:
Przekształciłem dla mnie plik CSV o wielkości 31 Mb (zrzut z bazy danych bibliotek zawierającej 20 000 wpisów) w około 15 sekund, co daje mi dobrze sformatowany plik XML do zapisania i manipulowania.
Jako edytor ma wiele innych funkcji powitalnych (wyszczególnionych pod linkiem powyżej). Nie mogę znaleźć wzmianki o żadnej licencji na to, ale jest to zawarte w „README”:
XMLSpear to darmowe oprogramowanie do użytku osobistego.
Prześlij swoją opinię na adres xmlspear@donkeydevelopment.com lub na forumhttp://donkeydevelopment.com/forums
.Zastosowanie komercyjne musi zostać zatwierdzone przez donkeydevelopment.
Wystarczy wysłać wiadomość e-mail na adres xmlspear@donkeydevelopment.com z tematem „wniosek o licencję”.
Plik Readme zawiera również pomocną zawartość pliku .desktop.
Dobrze działa dla mnie pod Ubuntu 18.04 LTS (Gnome).
Jestem wielkim fanem tego, BaseX
który wydaje się mieć możliwość importu:
http://docs.basex.org/wiki/CSV_Module
Może wskazać, że pozornie łatwiej jest korzystać z aplikacji internetowej:
https://webapps.stackexchange.com/q/123959/24327
Co oznacza wtyczkę lub rozszerzenie przeglądarki współpracujące z arkuszami Google.
Czuję twój ból, ponieważ jest to pozornie proste narzędzie, które powinno być dostępne przez apt.
Sugerowałbym, abyś ty lub ktoś napisał kody w Pythonie. Python jest łatwy do opanowania i rozwiązania problemu. Ma zarówno moduł CSV, jak i XML . Moja sugestia bierze pod uwagę, że może być konieczne posiadanie własnych nazw elementów XML lub innych skomplikowanych wymagań (takich jak konwersja ostatniej kolumny CSV na atrybut ostatniej kolumny).
Istnieje mnóstwo samouczków online na temat Pythona.