So konvertieren Sie XML in JSON in PHP


Beste Antwort

Sie können dies mithilfe einiger integrierter Funktionen tun, wenn Sie Kern-PHP mögen. Gehen Sie einfach wie folgt vor:

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

$jsonString = json\_encode($xmlObject);

$jsonObject = json\_decode($jsonString);

Lassen Sie uns einen ausgefallenen Weg finden, dies zu tun. Sollen wir.

Zuerst benötigen wir eine Klasse, um XML in JSON zu konvertieren.

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);

}

}

Ich habe den Code nicht getestet. Es kann sich nicht so verhalten, wie ich es wollte. Aber es ist einen Versuch wert. Normalerweise liegt das Problem darin, wie PHP Objekte und Zeichenfolgen aus XML behandelt. Ich hoffe es funktioniert aber! Sie können die obige Klasse wie folgt verwenden:

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

Oder Sie können ein Composer-Paket herunterladen und es ohne Sorgen implementieren als es wäre getestet worden.

markwilson / xml-to-json

Antwort

Um das JSON-Dateiformat zu verarbeiten, stellt Python ein Modul mit dem Namen JSON zur Verfügung.

SCHRITT 1: Installieren Sie das xmltodict-Modul mit pip oder einem anderen Python-Paketmanager.

pip install xmltodict

SCHRITT 2: Importieren Sie das JSON-Modul mit dem Schlüsselwort import

import json

SCHRITT 3: Lesen Sie die XML-Datei hier. „data\_dict“ ist die Variable, in die wir unsere XML-Daten nach der Konvertierung geladen haben Wörterbuch-Datentyp.

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

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

SCHRITT 4: Schließen Sie die XML-Datei

xml\_file.close()

SCHRITT 5: Konvertieren Sie die xml\_data in a Wörterbuch und Speichern in einem variablen JSON-Objekt sind von geschweiften Klammern {} umgeben. Sie sind in Schlüssel- und Wertepaaren geschrieben. json.loads () nimmt eine Zeichenfolge auf und gibt ein json-Objekt zurück. json.dumps () nimmt ein json-Objekt auf und gibt eine Zeichenfolge zurück. Wir verwenden xml\_data als Eingabezeichenfolge und generieren ein Pyhon-Objekt. Daher verwenden wir json.dumps ()

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

Hier ist json\_data das Variable zum Speichern des generierten Objekts.

SCHRITT 6: Schreiben Sie die json\_data in die Ausgabedatei

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

json\_file.write(json\_data)

SCHRITT 7: Schließen Sie die Ausgabedatei

json\_file.close()

Beispiel:

XML-Datei:

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

Ausgabe:

Um aufregende neue Dinge zu lernen, können Sie sie ausprobieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.