Bedste svar
Du kan gøre det ved hjælp af nogle indbyggede funktioner, hvis du er glad for core php. Bare gør det som nedenfor:
$xmlObject = simplexml\_load\_string($xmlString);
$jsonString = json\_encode($xmlObject);
$jsonObject = json\_decode($jsonString);
Lad os finde en fancy måde at gøre dette på. Skal vi.
Først har vi brug for noget klasse for at konvertere XML til 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);
}
}
Jeg har ikke testet koden. Det opfører sig muligvis ikke som jeg mente. Men det er værd at prøve. Normalt vil problemet være der, hvordan PHP behandler objekter og strenge fra XML. Jeg håber, det fungerer dog! Du kan bruge ovenstående klasse som angivet nedenfor:
$student = XmlToJson::fromFile("/var/www/uploads/student.xml")->toJson();
Eller du kan få en komponistpakke og implementere den uden bekymringer som det ville være blevet testet.
Svar
For at håndtere JSON-filformatet giver Python et modul med navnet JSON
.
TRIN 1: installer xmltodict-modul ved hjælp af pip eller en hvilken som helst anden python-pakkehåndtering
pip install xmltodict
TRIN 2: importer json-modul ved hjælp af nøgleordet import
import json
TRIN 3: Læs xml-filen her, “data\_dict” er den variabel, hvor vi har indlæst vores XML-data efter konvertering til ordbogsdatatype.
with open("xml\_file.xml") as xml\_file:
data\_dict = xmltodict.parse(xml\_file.read())
TRIN 4: Luk XML-filen
xml\_file.close()
TRIN 5: Konverter xml\_data til en ordbog og gem den i et variabelt JSON-objekt er omgivet af krøllede seler {}. De er skrevet i nøgle- og værdipar. json.loads () tager en streng og returnerer et json-objekt. json.dumps () tager et json-objekt ind og returnerer en streng. Vi bruger xml\_data som inputstreng og genererer pyhon-objekt, så vi bruger json.dumps ()
json\_data = json.dumps(data\_dict)
Her er json\_data variabel, der bruges til at gemme det genererede objekt.
TRIN 6: Skriv json\_data til outputfil
with open("data.json", "w") as json\_file:
json\_file.write(json\_data)
TRIN 7: Luk outputfilen
json\_file.close()
Eksempel:
XML-fil:
# 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()
Output:
For at lære spændende nye ting kan du tjekke det ud.