Comment convertir du XML en JSON en PHP


Meilleure réponse

Vous pouvez le faire avec l’aide de certaines fonctions intégrées si vous aimez le noyau PHP. Faites-le simplement comme ci-dessous:

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

$jsonString = json\_encode($xmlObject);

$jsonObject = json\_decode($jsonString);

Trouvons une façon sophistiquée de faire cela. Allons-y.

Premièrement, nous avons besoin dune classe pour convertir XML en 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);

}

}

Je nai pas testé le code. Il se peut que cela ne se comporte pas comme je le voulais. Mais ça vaut le coup dessayer. Habituellement, le problème réside dans la manière dont PHP traite les objets et les chaînes de XML. Jespère que ça marche! Vous pouvez utiliser la classe ci-dessus comme indiqué ci-dessous:

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

Ou, vous pouvez obtenir un package de composition et limplémenter sans soucis comme il aurait été testé.

markwilson / xml-to-json

Réponse

Pour gérer le format de fichier JSON, Python fournit un module nommé JSON.

ÉTAPE 1: installer le module xmltodict à laide de pip ou de tout autre gestionnaire de packages python

pip install xmltodict

ÉTAPE 2: importez le module json en utilisant le mot-clé import

import json

ÉTAPE 3: Lisez le fichier xml ici, « data\_dict » est la variable dans laquelle nous avons chargé nos données XML après les avoir converties en type de données dictionnaire.

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

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

ÉTAPE 4: Fermez le fichier XML

xml\_file.close()

ÉTAPE 5: Convertissez les données xml en dictionnaire et le stocker dans un objet JSON variable sont entourés daccolades {}. Ils sont écrits en paires clé et valeur. json.loads () prend une chaîne et retourne un objet json. json.dumps () prend un objet json et renvoie une chaîne. Nous utilisons xml\_data comme chaîne dentrée et générons un objet pyhon, donc nous utilisons json.dumps ()

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

Ici, json\_data est le variable utilisée pour stocker lobjet généré.

ÉTAPE 6: Ecrivez les json\_data dans le fichier de sortie

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

json\_file.write(json\_data)

ÉTAPE 7: Fermez le fichier de sortie

json\_file.close()

Exemple:

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

Résultat:

Pour apprendre de nouvelles choses passionnantes, vous pouvez le vérifier.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *