Nejlepší odpověď
Pokud máte rádi základní php, můžete to udělat pomocí některých vestavěných funkcí. Postupujte takto:
$xmlObject = simplexml\_load\_string($xmlString);
$jsonString = json\_encode($xmlObject);
$jsonObject = json\_decode($jsonString);
Najdeme nějaký fantazijní způsob, jak toho dosáhnout. Budeme.
Nejprve potřebujeme nějakou třídu pro převod XML na 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);
}
}
Kód jsem netestoval. Možná se nebude chovat tak, jak jsem chtěl. Ale stojí za to to vyzkoušet. Problém obvykle bude ve způsobu, jakým PHP zachází s objekty a řetězci z XML. Doufám, že to bude fungovat! Můžete použít výše uvedenou třídu, jak je uvedeno níže:
$student = XmlToJson::fromFile("/var/www/uploads/student.xml")->toJson();
Nebo můžete získat nějaký skladatelský balíček a bez obav jej implementovat jako bylo by to otestováno.
Odpověď
Ke zpracování formátu souboru JSON poskytuje Python modul s názvem JSON
.
KROK 1: install xmltodict module using pip or any other python package manager
pip install xmltodict
KROK 2: importujte modul json pomocí importu klíčových slov
import json
KROK 3: Zde si přečtěte soubor XML, „data\_dict“ je proměnná, do které jsme načetli data XML po převodu na datový typ slovníku.
with open("xml\_file.xml") as xml\_file:
data\_dict = xmltodict.parse(xml\_file.read())
KROK 4: Zavřete soubor XML
xml\_file.close()
KROK 5: Převeďte xml\_data na slovník a uložit jej do proměnného objektu JSON jsou obklopeny složenými závorkami {}. Jsou zapsány v párech klíčů a hodnot. json.loads () vezme řetězec a vrátí objekt json. json.dumps () vezme objekt json a vrátí řetězec. Jako vstupní řetězec používáme xml\_data a generujeme pyhonový objekt, takže používáme json.dumps ()
json\_data = json.dumps(data\_dict)
Zde je json\_data proměnná sloužící k uložení generovaného objektu.
KROK 6: Napište soubor json\_data do výstupního souboru
with open("data.json", "w") as json\_file:
json\_file.write(json\_data)
KROK 7: Zavřete výstupní soubor
json\_file.close()
Příklad:
Soubor 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()
Výstup:
Chcete-li se naučit vzrušující nové věci, můžete si to prohlédnout.