如何使用python将xml文件转换为JSON?

Ans*_*hul 7 python xml json xml-serialization

我有一个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>
Run Code Online (Sandbox Code Playgroud)

上面的XML文件我正在使用ElementTree进行解析并将其提供给Simplejson以进行序列化,如下所示:

from xml.etree import ElementTree as ET
import simplejson

tree = ET.parse(Xml_file_path)
simplejson.dumps(tree)
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:TypeError:0x00C49DD0处的xml.etree.ElementTree.ElementTree对象不是JSON可序列化的.

Mar*_*ech 17

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

拥有该数据结构后,可以将其序列化为JSON:

import xmltodict, json

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


Jan*_*avn 7

这可能是你正在寻找的:

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)
Run Code Online (Sandbox Code Playgroud)