Rumah > Artikel > pembangunan bahagian belakang > Python melaksanakan penukaran antara XML dan JSON
Python melaksanakan penukaran antara XML dan JSON
Pengenalan:
Dalam proses pembangunan harian, kita selalunya perlu menukar data antara format yang berbeza. XML dan JSON ialah format pertukaran data biasa Dalam Python, kita boleh menggunakan pelbagai perpustakaan untuk mencapai penukaran bersama antara XML dan JSON. Artikel ini akan memperkenalkan beberapa kaedah yang biasa digunakan, dengan contoh kod.
1. XML ke JSON
Dalam Python, kita boleh menggunakan modul xml.etree.ElementTree untuk menghuraikan dan menjana XML. Sebaliknya gunakan modul json untuk menghuraikan dan menjana JSON. Berikut ialah contoh menukar XML kepada JSON:
import xml.etree.ElementTree as ET import json def xml_to_json(xml_string): root = ET.fromstring(xml_string) return json.dumps({root.tag: xml_to_dict(root)}) def xml_to_dict(element): d = {} if element.attrib: d["@attributes"] = element.attrib if element.text: d[element.tag] = element.text for child in element: child_data = xml_to_dict(child) if child.tag in d: if type(d[child.tag]) is list: d[child.tag].append(child_data) else: d[child.tag] = [d[child.tag], child_data] else: d[child.tag] = child_data return d
Perihalan kod:
xml.etree.ElementTree
modul fromstring
untuk menukar XML aksara Tukar rentetan kepada objek Elemen. xml.etree.ElementTree
模块的fromstring
方法将XML字符串转换为Element对象。xml_to_json
函数,该函数接受一个XML字符串作为参数,并将解析后的结果转换为JSON字符串。xml_to_json
函数中,我们首先获取根元素的tag,并将其作为最外层的键。xml_to_dict
函数来递归地将每个XML元素转换为字典格式。xml_to_dict
函数中,我们首先判断当前元素是否有属性,如果有,则将其转换为字典的@attributes
键。xml_to_dict
函数来解析子元素。二、JSON转XML
与XML转JSON相反,我们可以使用xml.etree.ElementTree模块来生成XML,而使用json模块来解析和生成JSON。下面是一个将JSON转换为XML的示例:
import xml.etree.ElementTree as ET import json def json_to_xml(json_string): data = json.loads(json_string) root = ET.Element(data.keys()[0]) convert_dict_to_xml(data[data.keys()[0]], root) return ET.tostring(root, encoding="utf-8", xml_declaration=True) def convert_dict_to_xml(data, parent): if isinstance(data, dict): for key, value in data.items(): if isinstance(value, dict): element = ET.SubElement(parent, key) convert_dict_to_xml(value, element) elif isinstance(value, list): for item in value: element = ET.SubElement(parent, key) convert_dict_to_xml(item, element) else: ET.SubElement(parent, key).text = str(value) else: parent.text = str(data)
代码说明:
loads
方法将JSON字符串解析为Python字典对象。convert_dict_to_xml
函数来递归地将字典转换为XML格式。convert_dict_to_xml
函数中,我们首先判断当前数据是否为字典类型,如果是,则迭代字典的键值对。convert_dict_to_xml
函数。convert_dict_to_xml
xml_to_json
, yang menerima rentetan XML sebagai parameter dan menukar hasil yang dihuraikan menjadi rentetan JSON. xml_to_json
, kita mula-mula mendapatkan teg unsur akar dan menggunakannya sebagai kunci paling luar. Kemudian, kami memanggil fungsi xml_to_dict
untuk menukar secara rekursif setiap elemen XML kepada format kamus.
xml_to_dict
, kami mula-mula menentukan sama ada elemen semasa mempunyai atribut dan jika ya, tukarkannya kepada kekunci @attributes
kamus. 🎜🎜Kemudian, kami menentukan sama ada elemen semasa mempunyai kandungan teks dan jika ya, tukarkannya menjadi pasangan nilai kunci kamus. 🎜🎜Akhir sekali, kami mengulangi elemen anak unsur semasa dan secara rekursif memanggil fungsi xml_to_dict
untuk menghuraikan elemen anak. 🎜🎜🎜2. JSON ke XML🎜Bertentangan dengan XML dengan JSON, kita boleh menggunakan modul xml.etree.ElementTree untuk menjana XML dan modul json untuk menghuraikan dan menjana JSON. Berikut ialah contoh menukar JSON kepada XML: 🎜rrreee🎜Perihalan kod: 🎜🎜🎜Mula-mula, kami menggunakan kaedah loads
modul json untuk menghuraikan rentetan JSON ke dalam objek kamus Python. 🎜🎜Kemudian, kami mencipta elemen akar dan menetapkan tagnya sebagai kunci kamus. 🎜🎜Seterusnya, kami memanggil fungsi convert_dict_to_xml
untuk menukar kamus kepada format XML secara rekursif. 🎜🎜Dalam fungsi convert_dict_to_xml
, kami mula-mula menentukan sama ada data semasa ialah jenis kamus dan jika ya, ulangi pasangan nilai kunci kamus. 🎜🎜Jika nilainya ialah jenis kamus, buat elemen anak dan panggil fungsi convert_dict_to_xml
secara rekursif. 🎜🎜Jika nilai ialah jenis senarai, ulangi setiap elemen dalam senarai, buat berbilang sub-elemen dengan teg yang sama dan panggil fungsi convert_dict_to_xml
secara rekursif. 🎜🎜Jika nilai adalah jenis data asas yang lain, tambahkannya sebagai kandungan teks pada elemen semasa. 🎜🎜🎜Ringkasan: 🎜Melalui contoh kod di atas, kita boleh mencapai penukaran bersama antara XML dan JSON dalam Python. Sama ada ia menukar daripada XML kepada JSON atau daripada JSON kepada XML, ia boleh dicapai menggunakan perpustakaan dan kaedah yang berkaitan. Melalui penukaran ini, kami boleh menukar dan memproses data dengan mudah antara format data yang berbeza. Dalam pembangunan sebenar, kaedah yang sesuai dipilih untuk menghuraikan dan menjana format data yang berbeza mengikut keperluan khusus. 🎜Atas ialah kandungan terperinci Python melaksanakan penukaran antara XML dan JSON. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!