You are here

private function RESTServerViewBuiltIn::xml_recurse in Services 6.3

1 call to RESTServerViewBuiltIn::xml_recurse()
RESTServerViewBuiltIn::render_xml in servers/rest_server/includes/rest_server.views.inc

File

servers/rest_server/includes/rest_server.views.inc, line 78
Provide formatter class for all standard response formats.

Class

RESTServerViewBuiltIn

Code

private function xml_recurse(&$doc, &$parent, $data) {
  if (is_object($data)) {
    $data = get_object_vars($data);
  }
  if (is_array($data)) {
    $assoc = FALSE || empty($data);
    foreach ($data as $key => $value) {
      if (is_numeric($key)) {
        $key = 'item';
      }
      else {
        $assoc = TRUE;
        $key = preg_replace('/[^A-Za-z0-9_]/', '_', $key);
        $key = preg_replace('/^([0-9]+)/', '_$1', $key);
      }
      $element = $doc
        ->createElement($key);
      $parent
        ->appendChild($element);
      $this
        ->xml_recurse($doc, $element, $value);
    }
    if (!$assoc) {
      $parent
        ->setAttribute('is_array', 'true');
    }
  }
  elseif ($data !== NULL) {
    $parent
      ->appendChild($doc
      ->createTextNode($data));
  }
}