📜  Python – XML 到 JSON

📅  最后修改于: 2022-05-13 01:55:40.593000             🧑  作者: Mango

Python – XML 到 JSON

JSON文件是以 JavaScript 对象表示法 (JSON) 格式存储简单数据结构和对象的文件,这是一种标准数据交换格式。它主要用于在 Web 应用程序和服务器之间传输数据。JSON对象包含键/值对形式的数据。键是字符串,值是 JSON 类型。键和值用冒号分隔。每个条目(键/值对)由逗号分隔。 JSON 文件是轻量级的、基于文本的、人类可读的,并且可以使用文本编辑器进行编辑。
注意:有关更多信息,请参阅在Python中使用 JSON 数据
XML是一种用于存储数据的标记语言。它区分大小写。 XML 让您可以定义标记元素并生成定制的标记语言。 XML 中的基本单元称为元素。 XML 语言没有预定义的标签。它简化了数据共享、数据传输、平台更改、数据可用性 XML 文件的扩展名为 .xml
注意:有关详细信息,请参阅 XML |基本
JSON 和 XML 文件格式都用于在客户端和服务器之间传输数据。
但是,它们都具有相同的目的,尽管它们的方式不同。

JSON 和 XML 的比较

JSONXML
JSON object has a typeXML data is typeless
JSON types: string, number, array, BooleanAll XML data should be string
Data is readily accessible as JSON objectsXML data needs to be parsed
JSON is supported by most browsersCross-browser XML parsing can be tricky
JSON has no display capabilitiesXML offers the capability to display data because it is a markup language
JSON supports only text and number data type.XML support various data types such as number, text, images, charts, graphs, etc. It also provides options for transferring the structure or format of the data with actual data.
Retrieving value is easyRetrieving value is difficult
Supported by many Ajax toolkitNot fully supported by Ajax toolkit
A fully automated way of deserializing/serializing JavaScriptDevelopers have to write JavaScript code to serialize/de-serialize from XML
Native support for objectThe object has to be express by conventions – mostly missed use of attributes and elements.
It supports only UTF-8 encoding.It supports various encoding
It doesn’t support comments.It supports comments.
JSON files are easy to read as compared to XML.XML documents are relatively more difficult to read and interpret.
It does not provide any support for namespacesIt supports namespaces.
It is less secured.It is more secure than JSON.

将 Xml 转换为 json

为了处理 JSON 文件格式, Python提供了一个名为 json 的模块。
第 1 步:使用 pip 或任何其他Python包管理器安装 xmltodict 模块

pip install xmltodict

步骤 2:使用关键字 import 导入 json 模块

import json

第 3 步:读取 xml 文件
在这里, “data_dict”是我们在将 XML 数据转换为字典数据类型后加载它的变量。

with open("xml_file.xml") as xml_file:
    data_dict = xmltodict.parse(xml_file.read())

第 4 步:关闭 XML 文件

xml_file.close()

第 5 步:将 xml_data 转换为字典并将其存储在变量中
JSON 对象被花括号 { } 包围。它们以键值对的形式编写。
json.loads() 接受一个字符串并返回一个 json 对象。
json.dumps() 接收一个 json 对象并返回一个字符串。
我们使用 xml_data 作为输入字符串并生成Python对象,所以我们使用 json.dumps()

json_data = json.dumps(data_dict)

这里,json_data 是用来存储生成对象的变量。
第 6 步:将 json_data 写入输出文件

with open("data.json", "w") as json_file:
        json_file.write(json_data)

第 7 步:关闭输出文件

json_file.close()

例子:
XML 文件:

python-xml-to-json

Python3
# Program to convert an xml
# file to json file
 
# import json module and xmltodict
# module provided by python
import json
import xmltodict
 
 
# open the input xml file and read
# data in form of python dictionary
# using xmltodict module
with open("test.xml") as xml_file:
     
    data_dict = xmltodict.parse(xml_file.read())
    xml_file.close()
     
    # generate the object using json.dumps()
    # corresponding to json data
     
    json_data = json.dumps(data_dict)
     
    # Write the json data to output
    # json file
    with open("data.json", "w") as json_file:
        json_file.write(json_data)
        json_file.close()


输出:

python-xml-to-json