if (!empty($firstLevelCache[$identifier])) {
$array = $firstLevelCache[$identifier];
} else {
- $array = self::xml2arrayProcess($string, $NSprefix, $reportDocTag);
+ $array = self::xml2arrayProcess(trim($string), $NSprefix, $reportDocTag);
// Store content in first level cache
$firstLevelCache[$identifier] = $array;
}
}
/**
+ * @return array
+ */
+ public function providerForXml2Array(): array
+ {
+ return [
+ 'inputWithoutWhitespaces' => [
+ '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+ <T3FlexForms>
+ <data>
+ <field index="settings.persistenceIdentifier">
+ <value index="vDEF">egon</value>
+ </field>
+ </data>
+ </T3FlexForms>'
+ ],
+ 'inputWithPrecedingWhitespaces' => [
+ '
+ <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+ <T3FlexForms>
+ <data>
+ <field index="settings.persistenceIdentifier">
+ <value index="vDEF">egon</value>
+ </field>
+ </data>
+ </T3FlexForms>'
+ ],
+ 'inputWithTrailingWhitespaces' => [
+ '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+ <T3FlexForms>
+ <data>
+ <field index="settings.persistenceIdentifier">
+ <value index="vDEF">egon</value>
+ </field>
+ </data>
+ </T3FlexForms>
+ '
+ ],
+ 'inputWithPrecedingAndTrailingWhitespaces' => [
+ '
+ <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+ <T3FlexForms>
+ <data>
+ <field index="settings.persistenceIdentifier">
+ <value index="vDEF">egon</value>
+ </field>
+ </data>
+ </T3FlexForms>
+ '
+ ],
+ ];
+ }
+
+ /**
+ * @test
+ * @dataProvider providerForXml2Array
+ * @param string $input
+ */
+ public function xml2ArrayDealsProperlyWithWhitespace(string $input)
+ {
+ $expected = [
+ 'data' => [
+ 'settings.persistenceIdentifier' => [
+ 'vDEF' => 'egon',
+ ]
+ ],
+ ];
+ $this->assertSame($expected, GeneralUtility::xml2array($input));
+ }
+
+ /**
* @test
* @dataProvider idnaEncodeDataProvider
* @param $actual