Home >Backend Development >Python Tutorial >Python implements conversion between XML and JSON

Python implements conversion between XML and JSON

WBOY
WBOYOriginal
2023-08-07 19:10:494447browse

Python implements conversion between XML and JSON

Python implements conversion between XML and JSON

Introduction:
In the daily development process, we often need to convert data between different formats Make the conversion. XML and JSON are common data exchange formats. In Python, we can use various libraries to convert between XML and JSON. This article will introduce several commonly used methods, with code examples.

1. XML to JSON
In Python, we can use the xml.etree.ElementTree module to parse and generate XML. Instead use the json module to parse and generate JSON. Here is an example of converting XML to 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

Code description:

  1. First, we use the xml.etree.ElementTree module The fromstring method converts an XML string into an Element object.
  2. Then, we define a
  3. xml_to_json function that accepts an XML string as a parameter and converts the parsed result into a JSON string.
  4. In the
  5. xml_to_json function, we first get the tag of the root element and use it as the outermost key.
  6. Then, we call the
  7. xml_to_dict function to recursively convert each XML element to dictionary format.
  8. In the
  9. xml_to_dict function, we first determine whether the current element has attributes, and if so, convert it to the @attributes key of the dictionary.
  10. Then, we determine whether the current element has text content, and if so, convert it into a dictionary key-value pair.
  11. Finally, we iterate over the child elements of the current element and recursively call the
  12. xml_to_dict function to parse the child elements.
2. JSON to XML

Contrary to XML to JSON, we can use the xml.etree.ElementTree module to generate XML and the json module to parse and generate JSON. The following is an example of converting JSON to 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)

Code description:

    First, we use the
  1. loads method of the json module to parse the JSON string is a Python dictionary object.
  2. Then, we create a root element and set its tag to the key of the dictionary.
  3. Next, we call the
  4. convert_dict_to_xml function to recursively convert the dictionary to XML format.
  5. In the
  6. convert_dict_to_xml function, we first determine whether the current data is a dictionary type, and if so, iterate the key-value pairs of the dictionary.
  7. If the value is a dictionary type, a child element is created and the
  8. convert_dict_to_xml function is called recursively.
  9. If the value is a list type, iterate through each element in the list, create multiple sub-elements with the same tag, and call the
  10. convert_dict_to_xml function recursively.
  11. If the value is of another basic data type, add it as text content to the current element.
Summary:

Through the above code examples, we can achieve mutual conversion between XML and JSON in Python. Whether it is converting from XML to JSON or from JSON to XML, it can be achieved using relevant libraries and methods. Through these conversions, we can easily exchange and process data between different data formats. In actual development, appropriate methods are selected to parse and generate different data formats according to specific needs.

The above is the detailed content of Python implements conversion between XML and JSON. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn