diff --git a/plugins/views_data_export_plugin_style_export_xml.inc b/plugins/views_data_export_plugin_style_export_xml.inc
index 8e6d790..55b12c5 100644
--- a/plugins/views_data_export_plugin_style_export_xml.inc
+++ b/plugins/views_data_export_plugin_style_export_xml.inc
@@ -28,6 +28,10 @@ class views_data_export_plugin_style_export_xml extends views_data_export_plugin
       'default' => 'dash',
       'translatable' => FALSE,
     );
+    $options['no_entity_encode'] = array(
+      'default' => array(),
+      'translatable' => FALSE,
+    );
 
     return $options;
   }
@@ -66,5 +70,41 @@ class views_data_export_plugin_style_export_xml extends views_data_export_plugin
         'edit-style-options-transform' => array(TRUE),
       ),
     );
+
+    $field_labels = $this->display->handler->get_field_labels();
+    
+    if (!empty($field_labels)) {
+      $options = $field_labels;
+      if (empty($this->options['no_entity_encode'])) {
+        $this->options['no_entity_encode'] = array();
+      }
+
+      $form['no_entity_encode'] = array(
+        '#type' => 'checkboxes',
+        '#title' => t('Disable encoding of XML entities for these fields'),
+        '#options' => $options,
+        '#default_value' => $this->options['no_entity_encode'],
+        '#description' => t('If checked field contents will be outputted '.
+                            '<em>without encoding</em> of XML entities. This is '.
+                            'useful when when used in conjunction with a field '.
+                            'formatter that outputs properly formatted and '.
+                            'encoded XML data.'),
+      );
+    }
+
+  }
+  /**
+   * Perform any necessary changes to the form values prior to storage.
+   * There is no need for this function to actually store the data.
+   *
+   * @param $form
+   * @param $form_state
+   */
+  function options_submit(&$form, &$form_state) {
+    if (isset($form_state['values']['style_options']['no_entity_encode'])) {
+      // Remove any options values set to 0
+      $form_state['values']['style_options']['no_entity_encode'] =
+        array_filter($form_state['values']['style_options']['no_entity_encode']);
+    }
   }
 }
diff --git a/theme/views_data_export.theme.inc b/theme/views_data_export.theme.inc
index b26e8cd..c08336a 100644
--- a/theme/views_data_export.theme.inc
+++ b/theme/views_data_export.theme.inc
@@ -41,7 +41,7 @@ function theme_views_data_export_message($var) {
  */
 function theme_views_data_export_feed_icon($variables) {
   extract($variables, EXTR_SKIP);
-  $url_options = array('html' => true);
+  $url_options = array('html' => TRUE);
   if ($query) {
     $url_options['query'] = $query;
   }
@@ -372,19 +372,32 @@ function template_preprocess_views_data_export_xml_footer(&$vars) {
 function template_preprocess_views_data_export_xml_body(&$vars) {
   _views_data_export_header_shared_preprocess($vars);
   _views_data_export_body_shared_preprocess($vars);
+  
+  $view = $vars['view'];
+  $style_options = $view->display_handler->options['style_options'];
+  
+  $no_encode = $style_options['no_entity_encode'];
 
   // Compute the tag name based on the views base table, minus any trailing 's'.
   $vars['item_node'] = _views_data_export_xml_tag_clean(rtrim($vars['view']->base_table, 's'));
 
   foreach ($vars['themed_rows'] as $num => $row) {
     foreach ($row as $field => $content) {
-      // Prevent double encoding of the ampersand. Look for the entities produced by check_plain().
-      $content = preg_replace('/&(?!(amp|quot|#039|lt|gt);)/', '&amp;', $content);
-      // Convert < and > to HTML entities.
-      $content = str_replace(
-        array('<', '>'),
-        array('&lt;', '&gt;'),
-        $content);
+      
+      // Perform xml entity encoding unless excluded by style options.
+      if (empty($no_encode[$field])) {
+        
+        // Prevent double encoding of the ampersand. 
+        // Look for the entities produced by check_plain().
+        $content = preg_replace('/&(?!(amp|quot|#039|lt|gt);)/', '&amp;', $content);
+        
+        // Convert < and > to HTML entities.
+        $content = str_replace(
+          array('<', '>'),
+          array('&lt;', '&gt;'),
+          $content);
+      }
+      
       $vars['themed_rows'][$num][$field] = $content;
     }
   }
