- simplexml_load_string: documentation ( source)
- json_encode: documentation ( source)
<?php
function process_xml(string $xml_string) : array
{
// Process XML
$xml = simplexml_load_string($xml_string);
// Return array
$my_json['messages'] = [];
// Iterate over nodes
foreach($xml->children() as $message) {
// Technically not needed
$tmp = [];
// Iterate over attributes
foreach($message->attributes() as $name => $value) {
$tmp[$name] = $value;
}
$my_json['messages'][] = $tmp;
}
return $my_json;
}
$xml_string_1 = <<<EOT
<messages>
<message message="asdf" franchise_id="0000" id="1661170418wng204" posted="Mon Aug 22 8:13:38 a.m. ET 2022"/>
</messages>
EOT;
$xml_string_2 = <<<EOT
<messages>
<message franchise_id="0000" id="1661174329csw208" posted="Mon Aug 22 9:18:49 a.m. ET 2022" message="asdf"/>
<message id="1661170418wng204" posted="Mon Aug 22 8:13:38 a.m. ET 2022" franchise_id="0000" message="asdf"/>
</messages>
EOT;
echo json_encode(process_xml($xml_string_1));
echo PHP_EOL;
echo json_encode(process_xml($xml_string_2));