3v4l.org

run code in 300+ PHP versions simultaneously
<?php class ObjectAndXML { private static $xml; // Constructor public function __construct() { $this->xml = new XmlWriter(); $this->xml->openMemory(); $this->xml->startDocument('1.0'); $this->xml->setIndent(true); } // Method to convert Object into XML string public function objToXML($obj) { $this->getObject2XML($this->xml, $obj); $this->xml->endElement(); return $this->xml->outputMemory(true); } // Method to convert XML string into Object public function xmlToObj($xmlString) { return simplexml_load_string($xmlString); } private function getObject2XML(XMLWriter $xml, $data) { foreach($data as $key => $value) { if(is_object($value)) { $xml->startElement($key); $this->getObject2XML($xml, $value); $xml->endElement(); continue; } else if(is_array($value)) { $this->getArray2XML($xml, $key, $value); } if (is_string($value)) { $xml->writeElement($key, $value); } } } private function getArray2XML(XMLWriter $xml, $keyParent, $data) { foreach($data as $key => $value) { if (is_string($value)) { $xml->writeElement($keyParent, $value); continue; } if (is_numeric($key)) { $xml->startElement($keyParent); } if(is_object($value)) { $this->getObject2XML($xml, $value); } else if(is_array($value)) { $this->getArray2XML($xml, $key, $value); continue; } if (is_numeric($key)) { $xml->endElement(); } } } } $obj = new ObjectAndXML(); $str = <<<STR <?xml version="1.0" encoding="utf-8"?> <records> <person> <name>XYZ</name> <age>28</age> <gender>Male</gender> </person> <person> <name>ABC</name> <age>25</age> <gender>Male</gender> </person> </records> STR; $recordsObj = $obj->xmlToObj($str); echo '<pre>'; var_dump($recordsObj);

preferences:
42.97 ms | 402 KiB | 5 Q