I wanted to post an answer to this tread but it's either closed for answers or I don't have enough points to answer.
How to convert array to SimpleXML
I liked the answer by @Hanmant with the array_to_xml function he wrote. It was almost the answer I needed. I didn't like how it created child elements numbered "item0":
For example:
This is my sample Array:
$array = array();
$array["exampleOrderId"] = 1097374;
$array["timeStamp"] = date("Y-m-d", time());
$array["messages"][] = "Order Received";
$array["messages"][] = "Order Submitted For Processsing";
$array["events"][] = "Top Level Event";
$array["events"][] = "Moving order to processing queue";
$array["errors"][] = "Order item is not in stock";
Initial output:
<?xml version="1.0" encoding="UTF-8"?>
<orderResponse>
   <exampleOrderId>1097374</exampleOrderId>
   <timeStamp>2018-11-26</timeStamp>
   <messages>
      <item0>Order Received</item0>
      <item1>Order Submitted For Processsing</item1>
   </messages>
   <events>
      <item0>Top Level Event</item0>
      <message>
         <item0>Moving order to processing queue</item0>
         <error>
            <item0>Order item is not in stock</item0>
         </error>
      </message>
   </events>
</orderResponse>
There are elements here where messages is an array of message and errors is an array of error.
I made a very small change to his original array_to_xml function so it produces a child element which is the singular version of it's parent:
<?xml version="1.0" encoding="UTF-8"?>
<orderResponse>
   <exampleOrderId>1097374</exampleOrderId>
   <timeStamp>2018-11-26</timeStamp>
   <messages>
      <message>Order Received</message>
      <message>Order Submitted For Processsing</message>
   </messages>
   <events>
      <event>Top Level Event</event>
      <event>Moving order to processing queue</event>
   </events>
   <errors>
      <error>Order item is not in stock</error>
   </errors>
</orderResponse>
This is the revised function:
function array_to_xml( $data, &$xml_data, $element = "") {
    foreach( $data as $key => $value ) {
        if(! is_numeric($key) ){
            $element = $key;
        } else {
            $element = rtrim($element,'s');
        }
        if( is_array($value) ) {
            $subnode = $xml_data->addChild($element);
            array_to_xml($value, $subnode, $element);
        } else {
            $xml_data->addChild("$element",htmlspecialchars("$value"));
        }
    }
}
