Hi,

Bestaat er iets "simpel" om de inhoud van een class te lezen/schrijven zoals in dotnet.
lezen in vbdotnet

sr = New IO.StreamReader(sBestand)
Dim xmlS As New System.Xml.Serialization.XmlSerializer(Game.GetType)
Game = xmlS.Deserialize(sr)
sr.Close()

schrijven in vbdotnet

Dim sw As New System.IO.StreamWriter(Bestand)
Dim xml As New System.Xml.Serialization.XmlSerializer(NewGame.GetType)
xml.Serialize(sw, NewGame)
sw.Close()


Dit zou héél veel helpen. Eventueel zelfs in php8
Jan
Over welke inhoud hebben we het dan?
Argumenten? Methodes? Of....
<?php

/*
* @param object $object Object om als XML op te slaan.
* @param string $filename Naam van XML bestand.
*/
$array = json_decode(json_encode($object),true);
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($array,function($value,$key) use ($xml){ $xml->addChild($key,$value); });
$xml->asXml($filename);

?>
Merk op: Dit levert niet in alle gevallen valide XML op (bij array properties).
Hm, volgens mij gaat het ook niet helemaal goed bij geneste arrays (wordt platgeslagen) - was even snel knip/plak; nog even aanpassen indien een gelaagde structuur is gewenst.
- Ariën - op 26/12/2020 10:54:19

Over welke inhoud hebben we het dan?
Argumenten? Methodes? Of....

Allerhande data van allerhande types. Procedures staan in de phpbestanden toch niet in databestanden.
Bedoeling is om op te slaan/lezen van (windows)databestanden van type class X en subclass Y met ongeveer alle datatypes mogelijk. int, float, string, ... Zelf kleuren hoewel deze naar int geconverteerd worden.

Rob Doemaarwat op 26/12/2020 18:06:33

volgens mij gaat het ook niet helemaal goed bij geneste arrays

En het zijn toch wel geneste classes zeker:) zie ook mijn andere vraag.

Dan recursief:
<?php

function array2xml($xml,$array){
  foreach($array as $key => $value) if(is_array($value)) array2xml($xml->addChild($key),$value);
  else $xml->addChild($key,$value);
}

array2xml($xml = new SimpleXMLElement('<root/>'),json_decode(json_encode($object),true));
$xml->asXml($filename);

?>
Sorry maar nog steeds niet er door hoor:(
Ik start niet met json maar met xml. deze xml wil ik naar een variabele van een classe hebben.
De "JSON route" is puur om van een object een assoc.array te maken. Bovenstaande is Object->XML (of dus eigenlijk Object->JSON->XML). Het omgekeerde kan natuurlijk ook.

Reageren