Как я могу преобразовать файл CSV в XML?
Как я могу преобразовать файл CSV в XML?
Есть ли программное обеспечение для Ubuntu?
5 ответов
На веб-сайте сообщества по конвертации есть ссылка на инструмент командной строки 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
,
Довольно удобное для пользователя (т. Е. Простое для таких, как я) решение проблемы преобразования CSV в XML заключается в использовании хорошего кроссплатформенного редактора XML, в который встроена эта функция. (Я использовал его под Ubuntu и Mac OSX 10.10.5; у него также есть исполняемый файл Windows.)
XMLSpear
Как уже упоминалось, это редактор XML, но он включает в себя "импорт" CSV-to-XML (и Excel-to-XML) в своем главном меню:
Он конвертировал для меня 31-мегабайтный CSV-файл (дамп из базы данных библиотеки из 20000 записей) примерно за 15 секунд, что дало мне правильно сформированный XML-файл для сохранения и манипулирования.
В качестве редактора у него есть много других полезных функций (подробности по ссылке выше). Я не могу найти упоминание о какой-либо лицензии для него, но это включено в "README":
XMLSpear - бесплатное программное обеспечение для личного пользования.
Пожалуйста, отправьте свой отзыв на xmlspear@donkeydevelopment.com или на форумеhttp://donkeydevelopment.com/forums
,Коммерческое использование должно быть одобрено.
Просто отправьте электронное письмо по адресу xmlspear@donkeydevelopment.com с темой "Запрос лицензии".
В файле readme также содержится полезное содержимое файла.desktop.
Хорошо ли работает для меня под Ubuntu 18.04 LTS (Gnome).
Я бы предложил вам или кому-то написать коды на Python. Python легко выучить и легко решить вашу проблему. У этого есть и модуль CSV и модули XML. Мое предложение учитывает, что вам может потребоваться иметь собственные имена для элементов XML или иметь другие сложные требования (например, преобразование последнего столбца CSV в атрибут последнего, кроме одного столбца).
Есть множество учебников онлайн о Python.
Я большой поклонник BaseX
который, кажется, имеет возможность импорта:
http://docs.basex.org/wiki/CSV_Module
Можно отметить, что, похоже, проще использовать веб-приложение:
https://webapps.stackexchange.com/q/123959/24327
Что составляет плагин или расширение для браузера, который работает с листами Google.
Я чувствую вашу боль, потому что это, казалось бы, простая утилита, которая должна быть доступна через apt.