Как я могу преобразовать файл 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-to-XML (и Excel-to-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.
Я чувствую вашу боль, потому что это, казалось бы, простая утилита, которая должна быть доступна через apt.
Я бы посоветовал вам или кому-то написать коды на Python. Python легко выучить и легко решить вашу проблему. У этого есть и модуль CSV и модули XML . Мое предложение учитывает, что вам может потребоваться иметь собственные имена для элементов XML или иметь другие сложные требования (например, преобразование последнего столбца CSV в атрибут последнего, кроме одного столбца).
Есть множество учебников онлайн о Python.