Як я можу конвертувати файл CSV у XML?
Чи є якесь програмне забезпечення для Ubuntu?
Як я можу конвертувати файл CSV у XML?
Чи є якесь програмне забезпечення для Ubuntu?
Відповіді:
На веб-сайті спільноти щодо перетворення є посилання на інструмент командного рядка під назвою csv2xml . Оскільки це не збережено, ви можете вибрати інший варіант.
Також згадується інструмент java під назвою csv2xml (попередження: веб-сайт є німецькою мовою) та інструмент командного рядка, який називається ff-extractor .
Посилання також містить посилання на Python, Perl, PHP, XSLT, але це означає, що вам потрібно кодувати перетворювач самостійно.
Коли ви знаєте формат csv
файлу та структуру, яка вам потрібна у xml
файлі, зробити скрипт, який може обробити перетворення, досить просто.
Візьміть файл simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Ви можете створити такий xml
файл:
<?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>
З наступним сценарієм:
#!/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
Навіть якщо ви ніколи раніше не кодували, я думаю, що це має бути простим у використанні та модифікації. Файл читається по черзі в while
циклі.
IFS
- специфікатор внутрішнього поля. IFS=$','
Заявляє , що значення роздільник полів є коми. Це є стандартним для CSV-файлу, але його можна змінити за необхідності, щоб він відповідав формату вхідного файлу.
-r
Аргумент read
команди говорить це , щоб розглядати будь-які зворотні слеша в файл як частина ваших даних , а не як втеча для наступного спеціального символу.
-a arry
Аргумент поміщає кожен стовпець файлу в масив ( з ім'ям arry
). Стовпці в цьому прикладі - ім’я, вік, країна. Іншими словами, значення між комами. Отже кожен стовпець у рядку зберігається у масиві.
Тоді потрібний текст для xml
просто обмотується навколо значень і xml
рядок додається до вихідного файлу echo
.
while IFS=$',' read -r -a arry
, він корисний для іншого. Дякую.
"Somename, Jack"
замість Jack
вхідного файлу?
Досить зручним (тобто легким для нуметів, як я) рішенням завдання перетворення CSV в XML є використання приємного міжплатформного редактора XML, у якого вбудована ця функція. (Я використовував його як під Ubuntu, так і під Mac OSX 10.10.5; він також має виконувану систему Windows.)
Як вже згадувалося, це редактор XML, але він включає "імпорт" CSV-в-XML (і Excel-в-XML) у своєму головному меню:
Він конвертував для мене 31-мегабайтний CSV-файл (дамп із бібліотечної бази даних 20 000 записів) приблизно за 15 секунд, що дало мені добре сформований XML-файл для збереження та маніпулювання.
Як редактор, він має багато інших вітальних функцій (докладно за посиланням вище). Я не можу знайти жодної ліцензії на це, але це включено до "README":
XMLSpear - це безкоштовне програмне забезпечення для особистого користування.
Будь ласка, надішліть свої відгуки на xmlspear@donkeydevelopment.com або на форуміhttp://donkeydevelopment.com/forums
.Комерційне використання повинно бути схвалено віслюком.
Просто надішліть електронний лист на xmlspear@donkeydevelopment.com із темою "запит на отримання ліцензії".
Readme також корисно містить вміст файлу .desktop.
Чи добре це працює для мене під Ubuntu 18.04 LTS (Gnome).
Я великий фанат, BaseX
який, схоже, має можливість імпорту:
http://docs.basex.org/wiki/CSV_Module
Можна вказати, що користуватися веб-додатком, здавалося б, простіше:
https://webapps.stackexchange.com/q/123959/24327
Що означає плагін або розширення для браузера, який працює з google аркушами.
Я відчуваю ваш біль, тому що це, здавалося б, проста утиліта, яка повинна бути доступна через сприятливі.
Я б запропонував вам або комусь написати коди в Python. Python легко засвоїти і легко вирішити вашу проблему. Він має як модуль CSV, так і модулі XML . Моя пропозиція враховує, що вам може знадобитися мати власні імена елементів XML або мати інші складні вимоги (наприклад, перетворення останнього стовпця CSV в атрибут останнього, але одного стовпця).
В Інтернеті є багато підручників про Python.