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