AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 581265
Accepted
Vitor Mazuco
Vitor Mazuco
Asked: 2015-02-04 07:47:45 +0800 CST2015-02-04 07:47:45 +0800 CST 2015-02-04 07:47:45 +0800 CST

如何将 CSV 文件转换为 XML?

  • 772

如何将 CSV 文件转换为 XML?

有没有适用于 Ubuntu 的软件?

conversion
  • 5 5 个回答
  • 13889 Views

5 个回答

  • Voted
  1. chaskes
    2015-02-05T10:07:13+08:002015-02-05T10:07:13+08:00

    当您知道文件的格式和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.

    • 10
  2. Best Answer
    Rinzwind
    2015-02-04T07:55:04+08:002015-02-04T07:55:04+08:00

    在有关转换的社区网站上,有一个指向名为csv2xml的命令行工具的链接。由于它没有维护,您可能想选择其他选项。

    还提到了一个名为csv2xml的 java 工具(警告:网站是德语的)和一个名为ff-extractor的命令行工具。

    该链接还引用了 Python、Perl、PHP、XSLT,但这意味着您需要自己编写转换器代码。

    • 8
  3. Dɑvïd
    2018-09-20T03:26:41+08:002018-09-20T03:26:41+08:00

    CSV 到 XML 转换挑战的一个相当用户友好的(即,对于像我这样的笨蛋来说很容易)解决方案是使用一个很好的跨平台XML 编辑器,它内置了这个特性。(我在 Ubuntu 和 Mac OSX 10.10.5 下都使用过它;它还有 Windows 可执行文件。)

    XML矛

    如前所述,它是一个 XML 编辑器,但在其主菜单上包含 CSV-to-XML(和 Excel-to-XML)“导入”:

    在此处输入图像描述

    它在大约 15 秒内为我转换了一个 31Mb CSV 文件(从包含 20,000 个条目的图书馆数据库转储),为我提供了一个格式良好的 XML 文件来保存和操作。

    作为编辑器,它还有许多其他受欢迎的功能(在上面的链接中有详细说明)。我找不到它的任何许可证,但这包含在“自述文件”中:

    XMLSpear 是供个人使用的免费软件。
    请将您的反馈发送至 [email protected] 或论坛http://donkeydevelopment.com/forums。

    商业使用必须得到donkeydevelopment的批准。
    只需将主题为“许可请求”的电子邮件发送至 [email protected]。

    自述文件还包含一个 .desktop 文件的内容。

    在 Ubuntu 18.04 LTS (Gnome) 下工作对我来说很好吗?

    • 1
  4. Thufir
    2019-01-13T00:01:42+08:002019-01-13T00:01:42+08:00

    我是它的忠实粉丝,BaseX它似乎具有导入功能:

    http://docs.basex.org/wiki/CSV_Module


    可能会指出,使用 Web 应用程序似乎更容易:

    https://webapps.stackexchange.com/q/123959/24327

    这相当于浏览器的插件或扩展,可与谷歌表格一起使用。

    我感受到你的痛苦,因为它是一个看似简单的实用程序,应该可以通过 apt 获得。

    • 0
  5. Stefano Mtangoo
    2019-01-13T01:23:22+08:002019-01-13T01:23:22+08:00

    我建议您或其他人用 Python 编写代码。Python简单易学,轻松解决你的问题。它同时具有CSV 模块和XML 模块。我的建议考虑到您可能需要为 XML 元素命名或有其他复杂的要求(例如将最后一个 CSV 列转换为最后一列的属性)。

    网上有大量关于 Python 的教程。

    • 0

相关问题

  • 如何从命令行将 ppt 转换为 pdf?

  • 如何在格式之间转换音乐并保留其元数据?

  • 将任意文件格式的视频文件转换为 MPEG4/H.264?

  • 如何将 mkv 转换为 dvd 或 avi

  • 将 VM 映像转换或复制到 lvm 的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve