You are here

function ViewsDataExportExporterXML::array_to_xml in Views data export 7.4

1 call to ViewsDataExportExporterXML::array_to_xml()
ViewsDataExportExporterXML::add_row in exporters/views_data_export_exporter_xml.inc
Add a single row to the export file.

File

exporters/views_data_export_exporter_xml.inc, line 216

Class

ViewsDataExportExporterXML
Webform exporter for creating XML files.

Code

function array_to_xml(&$writer, $array, &$file_handle, $field_titles) {
  $key_open = false;
  foreach ($array as $key => $value) {

    // Ensure we are writing a valid XML tag name.
    $clean_tag = $this
      ->_clean_tag_from_key($key, $field_titles);

    // It's a parent node - open it and recurse to render the children.
    if (is_array($value)) {

      // Open a parent key.
      $writer
        ->startElement($clean_tag);
      $key_open = true;

      // Recursive call, to render children.
      $this
        ->array_to_xml($writer, $value, $file_handle, $field_titles);
    }
    else {

      // If it contains valid XML ready for export, don't encode it.
      if (in_array($key, $this->options['no_entity_encode'], TRUE)) {

        // We want to write the raw value.
        $value_to_write = $value;

        // Open the tag.
        $writer
          ->startElement($clean_tag);

        // Write the data raw, as is.
        $writer
          ->writeRaw($value_to_write);

        // Close the tag.
        $writer
          ->endElement();
      }
      else {
        if (in_array($key, $this->options['cdata_wrapper'], TRUE)) {

          // We want to write the raw value.
          $value_to_write = $value;

          // Open the tag.
          $writer
            ->startElement($clean_tag);

          // Write the data within CDATA tags.
          $writer
            ->writeCData($value_to_write);

          // Close the tag.
          $writer
            ->endElement();
        }
        else {

          // Write normal element to the file, encoding special characters.
          $value_to_write = htmlspecialchars($value);

          // Write the tag & contents.
          $writer
            ->writeElement($clean_tag, $value_to_write);
        }
      }
    }

    // Close the open parent key.
    if ($key_open) {
      $writer
        ->endElement();
      $key_open = false;
    }
  }
}