Python中有多种方法可以将XML转换为JSON,包括使用标准库中的xml.dom.minidom模块、xmltodict模块以及lxml库。
1. 使用xml.dom.minidom模块:
xml.dom.minidom是Python标准库中提供的一个轻量级的DOM操作接口。下面是将XML转换为JSON的示例代码:
```python
import xml.dom.minidom
import json
def xml_to_json(xml_str):
# 解析XML字符串
dom = xml.dom.minidom.parseString(xml_str)
# 获取根元素
root = dom.documentElement
# 转换为JSON格式
json_data = xml_to_json_node(root)
return json_data
def xml_to_json_node(node):
# 判断当前节点类型
if node.nodeType == node.TEXT_NODE:
# Text节点,返回节点内容
return node.nodeValue
elif node.nodeType == node.ELEMENT_NODE:
# Element节点
json_data = {}
# 转换子节点
for child in node.childNodes:
child_name = child.nodeName
child_value = xml_to_json_node(child)
# 判断是否已存在相同名字的子节点
if child_name in json_data:
if type(json_data[child_name]) is list:
json_data[child_name].append(child_value)
else:
json_data[child_name] = [json_data[child_name], child_value]
else:
json_data[child_name] = child_value
return json_data
# 测试代码
xml = '''
-
Apple
10
-
Banana
5
'''
json_data = xml_to_json(xml)
print(json.dumps(json_data, indent=4))
```
运行以上代码,将输出以下JSON内容:
```json
{
"root": {
"item": [
{
"name": "Apple",
"price": "10"
},
{
"name": "Banana",
"price": "5"
}
]
}
}
```
2. 使用xmltodict模块:
xmltodict是一个专门用于转换XML到JSON的Python库。下面是用xmltodict实现XML转换为JSON的示例代码:
```python
import xmltodict
import json
def xml_to_json(xml_str):
# 将XML字符串转换为字典
xml_dict = xmltodict.parse(xml_str)
# 将字典转换为JSON
json_data = json.dumps(xml_dict, indent=4)
return json_data
# 测试代码
xml = '''
-
Apple
10
-
Banana
5
'''
json_data = xml_to_json(xml)
print(json_data)
```
运行以上代码,将输出以下JSON内容:
```json
{
"root": {
"item": [
{
"name": "Apple",
"price": "10"
},
{
"name": "Banana",
"price": "5"
}
]
}
}
```
3. 使用lxml库:
lxml是Python中一个功能强大的XML处理库。下面是用lxml实现XML转换为JSON的示例代码:
```python
import xml.etree.ElementTree as ET
import json
def xml_to_json(xml_str):
# 解析XML字符串
root = ET.fromstring(xml_str)
# 转换为JSON格式
json_data = xml_to_json_node(root)
return json_data
def xml_to_json_node(node):
# 判断当前节点类型
if len(node) == 0:
# 叶子节点,返回节点值
return node.text
else:
# 非叶子节点
json_data = {}
for child in node:
# 递归转换子节点
child_name = child.tag
child_value = xml_to_json_node(child)
# 判断是否已存在相同名字的子节点
if child_name in json_data:
if type(json_data[child_name]) is list:
json_data[child_name].append(child_value)
else:
json_data[child_name] = [json_data[child_name], child_value]
else:
json_data[child_name] = child_value
return json_data
# 测试代码
xml = '''
-
Apple
10
-
Banana
5
'''
json_data = xml_to_json(xml)
print(json.dumps(json_data, indent=4))
```
运行以上代码,将输出以下JSON内容:
```json
{
"root": {
"item": [
{
"name": "Apple",
"price": "10"
},
{
"name": "Banana",
"price": "5"
}
]
}
}
```
以上是三种常用的将XML转换为JSON的方法,根据实际情况选择适合自己的方法进行使用。
声明:免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。