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.
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.