【问题标题】:How can i convert an xml file into JSON using python?如何使用 python 将 xml 文件转换为 JSON?
【发布时间】:2011-09-21 20:33:33
【问题描述】:

我有一个 XML 文件,我想使用 python 将其转换为 JSON 文件,但它对我来说不起作用。

<?xml version="1.0"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

我正在使用 ElementTree 解析上述 XML 文件并将其提供给 Simplejson 以像这样进行序列化:

from xml.etree import ElementTree as ET
import simplejson

tree = ET.parse(Xml_file_path)
simplejson.dumps(tree)

它给了我一个错误:TypeError: xml.etree.ElementTree.ElementTree object at 0x00C49DD0 is not JSON serializable。

【问题讨论】:

  • 您必须了解元素树对象不是 XML 文件的完整表示,它仅提供访问 XML 文件任何部分的方法。使用 xml2json 模块的答案将满足您的需求。

标签: python xml json xml-serialization


【解决方案1】:

另一个选项是xmltodict(完全披露:我写的)。它可以帮助您将 XML 转换为 dict+list+string 结构,遵循 "standard"。它基于Expat,因此速度非常快,不需要在内存中加载整个 XML 树。

一旦你有了那个数据结构,你就可以将它序列化为 JSON:

import xmltodict, json

o = xmltodict.parse('<e> <a>text</a> <a>text</a> </e>')
json.dumps(o) # '{"e": {"a": ["text", "text"]}}'

【讨论】:

    【解决方案2】:

    这可能是您正在寻找的:

    https://github.com/mutaku/xml2json

    import xml2json
    
    s = '''<?xml version="1.0"?>
    <note>
       <to>Tove</to>
       <from>Jani</from>
       <heading>Reminder</heading>
       <body>Don't forget me this weekend!</body>
    </note>'''
    print xml2json.xml2json(s)
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用xmljson。相同的代码是

      from xmljson import badgerfish as bf
      from xml.etree.ElementTree import fromstring
      s = '''<?xml version="1.0"?>
      <note>
         <to>Tove</to>
         <from>Jani</from>
         <heading>Reminder</heading>
         <body>Don't forget me this weekend!</body>
      </note>'''
      json.dumps(bf.data(fromstring(s)))
      

      【讨论】:

        【解决方案4】:

        xml_to_json。它支持xsd 模式,例如类型定义。

        【讨论】:

          猜你喜欢
          • 2019-03-27
          • 1970-01-01
          • 2014-11-11
          • 1970-01-01
          • 2014-10-26
          • 2010-09-16
          • 2019-12-01
          • 1970-01-01
          • 2015-02-23
          相关资源
          最近更新 更多