Cómo convertir XML a JSON en PHP


La mejor respuesta

Puede hacerlo con la ayuda de algunas funciones integradas si le gusta el núcleo php. Hágalo como se muestra a continuación:

$xmlObject = simplexml\_load\_string($xmlString);

$jsonString = json\_encode($xmlObject);

$jsonObject = json\_decode($jsonString);

Busquemos una manera elegante de hacer esto. Vamos.

Primero, necesitamos algo de clase para convertir XML a JSON.

class XmlToJson{

private $xmlObject;

public function getXmlObject(){

return $this->xmlObject;

}

// It"s basic constructor. Just getting the XML object

// If we have XML Object then we can just create new

// Object with XML Object as parameter.

public function \_\_construct($xmlObject = null){

$this->xmlObject = $xmlObject;

}

// Read from XML file and create Object from the contents.

public static function fromFile($filepath){

if(!file\_exists($filepath){

throw new Exception("File not found");

}

$xmlString = file\_get\_contents($filepath);

if($xmlString === false){

throw new Exception("Could not read the file");

}

return self::fromString($xmlString);

}

// Get XML String and create new Object from the string.

public static function fromString($xmlString){

if($xmlObject === false){

throw new Exception("Could not convert to XML Object");

}

return new XmlToJson($xmlObject);

}

// Get Json Object from the XML Object we have

public function getJson(){

$jsonString = json\_encode($this->xmlObject);

return json\_decode($jsonString);

}

}

No he probado el código. Puede que no se comporte de la manera que yo quería. Pero vale la pena intentarlo. Por lo general, el problema estará en la forma en que PHP trata los objetos y cadenas de XML. ¡Espero que funcione! Puede usar la clase anterior como se indica a continuación:

$student = XmlToJson::fromFile("/var/www/uploads/student.xml")->toJson();

O puede obtener algún paquete de compositor e implementarlo sin preocupaciones como habría sido probado.

markwilson / xml-to-json

Respuesta

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

PASO 1: instalar el módulo xmltodict usando pip o cualquier otro administrador de paquetes de Python

pip install xmltodict

PASO 2: importar el módulo json usando la palabra clave import

import json

PASO 3: Lea el archivo xml aquí, “data\_dict” es la variable en la que hemos cargado nuestros datos XML después de convertirlos a tipo de datos de diccionario.

with open("xml\_file.xml") as xml\_file:

data\_dict = xmltodict.parse(xml\_file.read())

PASO 4: Cierre el archivo XML

xml\_file.close()

PASO 5: Convierta xml\_data en un diccionario y almacenarlo en un objeto JSON variable están rodeados de llaves {}. Están escritos en pares de clave y valor. json.loads () toma una cadena y devuelve un objeto json. json.dumps () toma un objeto json y devuelve una cadena. Usamos xml\_data como cadena de entrada y generamos el objeto Pyhon, por lo que usamos json.dumps ()

json\_data = json.dumps(data\_dict)

Aquí, json\_data es el variable utilizada para almacenar el objeto generado.

PASO 6: Escriba json\_data en el archivo de salida

with open("data.json", "w") as json\_file:

json\_file.write(json\_data)

PASO 7: Cerrar el archivo de salida

json\_file.close()

Ejemplo:

Archivo XML:

# 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()

Salida:

Para aprender cosas nuevas e interesantes, puede consultarlo.

Deja una respuesta

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