diff --git a/src/Plugin/migrate_plus/data_parser/SimpleXml.php b/src/Plugin/migrate_plus/data_parser/SimpleXml.php
index a33b6a086901abf74cfd0a86bcddc177fbcfd66b..8a58d8b075c5d2bf77ed7a2ef634e54e0e1b0699 100644
--- a/src/Plugin/migrate_plus/data_parser/SimpleXml.php
+++ b/src/Plugin/migrate_plus/data_parser/SimpleXml.php
@@ -77,7 +77,7 @@ class SimpleXml extends DataParserPluginBase {
       }
       // Reduce single-value results to scalars.
       foreach ($this->currentItem as $field_name => $values) {
-        if (count($values) == 1) {
+        if (is_array($values) && count($values) == 1) {
           $this->currentItem[$field_name] = reset($values);
         }
       }
diff --git a/tests/data/simple_xml_reduce_single_value.xml b/tests/data/simple_xml_reduce_single_value.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0cffd2890844911620445a73e0c9dc815d238fce
--- /dev/null
+++ b/tests/data/simple_xml_reduce_single_value.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<items>
+  <item id="1">
+    <values title="Values">
+      <value>Value 1</value>
+      <value>Value 2</value>
+    </values>
+  </item>
+  <item id="2">
+    <values title="Values">
+      <value>Value 1 (single)</value>
+    </values>
+  </item>
+</items>
diff --git a/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php b/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fe6b345e1dfd53383924f7cf0b4ded3e75203ccc
--- /dev/null
+++ b/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php
@@ -0,0 +1,77 @@
+<?php
+
+namespace Drupal\Tests\migrate_plus\Kernel\Plugin\migrate_plus\data_parser;
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Test of the data_parser SimpleXml migrate_plus plugin.
+ *
+ * @group migrate_plus
+ */
+class SimpleXmlTest extends KernelTestBase {
+
+  public static $modules = ['migrate', 'migrate_plus'];
+
+  /**
+   * Tests reducing single values.
+   *
+   * @throws \Drupal\Component\Plugin\Exception\PluginException
+   * @throws \Exception
+   */
+  public function testReduceSingleValue() {
+    $path = $this->container
+      ->get('module_handler')
+      ->getModule('migrate_plus')
+      ->getPath();
+    $url = $path . '/tests/data/simple_xml_reduce_single_value.xml';
+
+    /** @var \Drupal\migrate_plus\DataParserPluginManager $plugin_manager */
+    $plugin_manager = $this->container
+      ->get('plugin.manager.migrate_plus.data_parser');
+    $conf = [
+      'plugin' => 'url',
+      'data_fetcher_plugin' => 'file',
+      'data_parser_plugin' => 'simple_xml',
+      'destination' => 'node',
+      'urls' => [$url],
+      'ids' => ['id' => ['type' => 'integer']],
+      'fields' => [
+        [
+          'name' => 'id',
+          'label' => 'Id',
+          'selector' => '@id',
+        ],
+        [
+          'name' => 'values',
+          'label' => 'Values',
+          'selector' => 'values',
+        ],
+      ],
+      'item_selector' => '/items/item',
+    ];
+    $parser = $plugin_manager->createInstance('simple_xml', $conf);
+
+    $data = [];
+    foreach ($parser as $item) {
+      $values = [];
+      foreach ($item['values'] as $value) {
+        $values[] = (string) $value;
+      }
+      $data[] = $values;
+    }
+
+    $expected = [
+      [
+        'Value 1',
+        'Value 2',
+      ],
+      [
+        'Value 1 (single)',
+      ],
+    ];
+
+    $this->assertEquals($expected, $data);
+  }
+
+}