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
/*
* @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.
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.
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.