Python: de JSON a XML

Un archivo JSON es un archivo que almacena objetos y estructuras de datos simples en formato de notación de objetos JavaScript (JSON), que es un formato de intercambio de datos estándar. Se utiliza principalmente para transmitir datos entre una aplicación web y un servidor. Un objeto JSON contiene datos en forma de un par clave/valor. Las claves son strings y los valores son los tipos JSON. Las claves y los valores están separados por dos puntos. Cada entrada (par clave/valor) está separada por una coma. Los archivos JSON son livianos, basados ​​en texto, legibles por humanos y se pueden editar con un editor de texto.

Nota: Para obtener más información, consulte Trabajar con datos JSON en Python.

XML es un lenguaje de marcado diseñado para almacenar datos. Es sensible a mayúsculas y minúsculas. XML le ofrece definir elementos de marcado y generar un lenguaje de marcado personalizado. La unidad básica en el XML se conoce como elemento. El lenguaje XML no tiene etiquetas predefinidas. Simplifica el intercambio de datos, el transporte de datos, los cambios de plataforma, la disponibilidad de datos La extensión de un archivo XML es .xml

Nota: Para obtener más información, consulte XML | Lo esencial

Tanto el formato de archivo JSON como XML se utilizan para transferir datos entre el cliente y el servidor.
Sin embargo, ambos tienen el mismo propósito, aunque difieren en su forma de actuar.

Comparación entre JSON y XML

JSON XML
El objeto JSON tiene un tipo Los datos XML no tienen tipo
Tipos JSON: string, número, array, booleano Todos los datos XML deben ser strings
Los datos son fácilmente accesibles como objetos JSON Los datos XML deben analizarse
JSON es compatible con la mayoría de los navegadores El análisis XML entre navegadores puede ser complicado
JSON no tiene capacidades de visualización XML ofrece la capacidad de mostrar datos porque es un lenguaje de marcado
JSON solo admite tipos de datos de texto y números. XML admite varios tipos de datos, como números, texto, imágenes, tablas, gráficos, etc. También brinda opciones para transferir la estructura o el formato de los datos con datos reales.
Recuperar valor es fácil Recuperar valor es difícil
Compatible con muchas herramientas de Ajax No es totalmente compatible con el kit de herramientas de Ajax
Una forma totalmente automatizada de deserializar/serializar JavaScript Los desarrolladores tienen que escribir código JavaScript para serializar/deserializar desde XML
Soporte nativo para objetos El objeto tiene que expresarse mediante convenciones, principalmente el uso perdido de atributos y elementos.
Solo admite la codificación UTF-8. Admite varias codificaciones
No admite comentarios. Admite comentarios.
Los archivos JSON son fáciles de leer en comparación con XML. Los documentos XML son relativamente más difíciles de leer e interpretar.
No proporciona ningún soporte para espacios de nombres. Admite espacios de nombres.
Es menos seguro. Es más seguro que JSON.

Manejo de JSON en Python 3

Para manejar el formato de archivo JSON, Python proporciona un módulo llamado json.

PASO 1: importa el módulo json

import json as JS

PASO 2: importar el módulo xml.etree.ElementTree

import xml.etree.ElementTree as ET

PASO 3: Lea el archivo json
aquí, «datos» es la variable en la que hemos cargado nuestros datos JSON.

with open("quiz.json", "r") as json_file:
    data = JS.load(json_file);

PASO 4: Cree el elemento raíz
Cada archivo xml debe tener exactamente un elemento raíz

root = ET.Element("quiz")

PASO 5: Construir los subelementos del subelemento raíz
toma dos parámetros:

  • root- Es el nombre de la variable donde se almacena el elemento raíz.
  • subelement_name: Es el nombre del subelemento. Ejemplo:
Maths = ET.SubElement(root, "maths")

PASO 6: Cree el árbol del documento xml

tree = ET.ElementTree(root)

PASO 7: Escriba el xml en el archivo quiz.xml

tree.write("quiz.xml")

Nota: los elementos XML no admiten valores enteros, por lo que debemos convertirlos en strings.

Ejemplo:

Archivo JSON:

python-json-to-xml

# Program to read JSON file 
# and generate its XML file
   
# Importing json module and xml
# module provided by python
import json as JS
import xml.etree.ElementTree as ET
   
# Opening JSON file in read mode
with open("myfile3.json", "r") as json_file:
   
    # loading json file data 
    # to variable data
    data = JS.load(json_file);
   
    # Building the root element 
    # of the xml file
    root = ET.Element("quiz")
   
    # Building the sub root elements
    # We don't add text since the value 
    # associated with subelement is a 
    # python dictionary
    Maths = ET.SubElement(root, "maths")
   
    # Building subelement of maths as q1
    Q1 = ET.SubElement(Maths, "q1")
    ET.SubElement(Q1, "question").
    text = data["quiz"]["maths"]["q1"]["question"]
   
    # Building multiple subelements with name options to hold different values
    # Xml elements cannot hold integer values so we need to
    # convert them to string
    ET.SubElement(Q1, "options").text = str(data["quiz"]
                                            ["maths"]["q1"]
                                            ["options"][0])
      
    ET.SubElement(Q1, "options").text = str(data["quiz"]
                                            ["maths"]["q1"]
                                            ["options"][1])
      
    ET.SubElement(Q1, "options").text = str(data["quiz"]
                                            ["maths"]["q1"]
                                            ["options"][2])
      
    ET.SubElement(Q1, "options").text = str(data["quiz"]
                                            ["maths"]["q1"]
                                            ["options"][3])
      
    ET.SubElement(Q1, "answer").text = str(data["quiz"]
                                           ["maths"]["q1"]
                                           ["answer"])
   
    # Building subelement of maths as q2
    Q2 = ET.SubElement(Maths, "q2")
    ET.SubElement(Q2, "question").text = data["quiz"]
    ["maths"]["q2"]["question"]
      
    # Building multiple subelements 
    # with name options to hold
    # different values
    ET.SubElement(Q2, "options").text = str(data["quiz"]
                                            ["maths"]
                                            ["q2"]
                                            ["options"][0])
      
    ET.SubElement(Q2, "options").text = str(data["quiz"]
                                            ["maths"]
                                            ["q2"]
                                            ["options"][1])
      
    ET.SubElement(Q2, "options").text = str(data["quiz"]
                                            ["maths"]["q2"]
                                            ["options"][2])
      
    ET.SubElement(Q2, "options").text = str(data["quiz"]
                                            ["maths"]["q2"]
                                            ["options"][3])
      
    ET.SubElement(Q2, "answer").text = str(data["quiz"]
                                           ["maths"]["q2"]
                                           ["answer"])
   
    # Building the tree of the xml
    # elements using the root element
    tree = ET.ElementTree(root)
   
    # Writing the xml to output file
    tree.write("quiz.xml")

Producción:

python-json-to-xml

Publicación traducida automáticamente

Artículo escrito por abhinash_giri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *