【问题标题】:How to convert an XML file to a JSON file如何将 XML 文件转换为 JSON 文件
【发布时间】:2014-10-26 06:07:47
【问题描述】:

如何将我的 Linux 目录中的提取数据保存为 JSON?我尝试将其保存到一个 XML 文件中,如果我运行脚本,它将生成一个 XML 文件,如“data.xml”。

我不知道如何将其转换为 JSON 文件。

这是我的 Bash 脚本中的 XML 模板:

file=~/data.xml
  template=" <Data>\n\
  <date>%d</date>\n\
  <time>%d</time>\n\
  <age>%d</age>\n\
  <place>%s</place>\n\
  <name>%d<name>\n\</Data>\n"

  echo '<?xml version="1.0"?>' >> $file
  echo '<List2>' >> $file

模板

printf "$template" "$date"\
                    "$time"\
                    "$age"\
                    "$place"\
                    "$name"\$file   
#closing tag
echo '</List>' >> $file

【问题讨论】:

  • 你不能对 JSON 而不是 XML 做同样的事情吗? template='{"data":{"date":"%d" ...
  • @Thilo:很棒的建议。
  • @Gen 您已经在模板中提供了您的数据($date、$time 等...)。您唯一的挑战是以 json 格式格式化输出。拥有可以以多种格式输出数据的脚本并不罕见。
  • 如果您想保留 XML 生成器,您还可以考虑将 XML 转换为 JSON。请参阅stackoverflow.com/questions/18830248/… 了解一个很好的例子。
  • 通用 XML 到 JSON 可能是一个挑战,因为 XML 数据都是字符串,而 JSON 类型很少。没有简单的方法来判断像“12345”这样的标记是数字还是字符串。其他方式(JSON->XML)更容易,使用像jq这样的工具。可以转换架构,但这需要更多的设置工作

标签: json xml bash


【解决方案1】:

我建议使用xmljson lib,并编写如下代码:

from collections import OrderedDict
from xmljson import BadgerFish
from json import dumps

def xml_to_json(xml_string):
    bf = BadgerFish(dict_type=OrderedDict)
    return dumps(bf.data(fromstring(xml_string)))

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 2012-06-17
    • 2017-12-14
    • 1970-01-01
    • 2013-11-05
    • 2017-06-18
    • 2023-03-09
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多