php - Laravel - SimpleXMLElement' not found -
i read this link , examples. want convert array xml using laravel (and php7) . here code :
   public function sitemap()      {         if (function_exists('simplexml_load_file')) {             echo "simplexml functions available.<br />\n";         } else {             echo "simplexml functions not available.<br />\n";         }         $array = array (             'bla' => 'blub',             'foo' => 'bar',             'another_array' => array (                 'stack' => 'overflow',             ),         );         $xml = simplexml_load_string('<root/>');          array_walk_recursive($array, array ($xml, 'addchild'));         print $xml->asxml();     }   it's first try . returns me :
simplexml functions available. blafoostack   my second try :
public function sitemap()  {      $test_array = array (         'bla' => 'blub',         'foo' => 'bar',         'another_array' => array (             'stack' => 'overflow',         ),     );     $this->array_to_xml($test_array);  } private function array_to_xml(array $arr, simplexmlelement $xml = null) {     foreach ($arr $k => $v) {         is_array($v)             ? array_to_xml($v, $xml->addchild($k))             : $xml->addchild($k, $v);     }     return $xml; }   i had error in situation :
fatal error: call member function addchild() on null
here want :
<?xml version="1.0"?> <root>   <blub>bla</blub>   <bar>foo</bar>   <overflow>stack</overflow> </root>   any suggestion?
notice have simplexmlelement $xml = null in method signature:
private function array_to_xml(array $arr, simplexmlelement $xml = null)   now, notice call method this:
$this->array_to_xml($test_array); // <--- no second parameter   this means variable $xml null in array_to_xml() context because didn't give method , 2nd parameter (so defaults null). since never built actual element, gives 
fatal error: call member function addchild() on null
you either have give method necessary element
$this->array_to_xml($test_array, new simplexmlelement);   or build element inside method
private function array_to_xml(array $arr) {     $xml = new simplexmlelement();     ... }      
Comments
Post a Comment