diff --git a/src/XmlToArray.php b/src/XmlToArray.php index 193f7de..a71ba64 100755 --- a/src/XmlToArray.php +++ b/src/XmlToArray.php @@ -23,6 +23,8 @@ public function __construct(string $xml) public static function convert(string $xml): array { + $xml = trim(preg_replace('/\s\s+/', '', $xml)); + $converter = new static($xml); return $converter->toArray(); diff --git a/tests/XmlToArrayTest.php b/tests/XmlToArrayTest.php index 9656cf4..52109a4 100755 --- a/tests/XmlToArrayTest.php +++ b/tests/XmlToArrayTest.php @@ -18,6 +18,7 @@ class XmlToArrayTest extends TestCase public function test(array $array) { $xml = ArrayToXml::convert($array, 'items'); + $this->assertSame(['items' => $array], XmlToArray::convert($xml)); } @@ -70,13 +71,16 @@ public function data() * @dataProvider sameNameData * * @param array $array + * * @test */ public function sameNameTest(array $array) { $xml = ArrayToXml::convert($array, 'items'); + $convertedArr = XmlToArray::convert($xml); - $this->assertSame(['items' => $array], XmlToArray::convert($xml)); + + $this->assertSame(['items' => $array], $convertedArr); } public function sameNameData() @@ -109,13 +113,16 @@ public function sameNameData() * @dataProvider sameMultiDimensionalData * * @param array $array + * * @test */ public function sameMultiDimensionalTest(array $array) { $xml = ArrayToXml::convert($array, 'items'); + $convertedArr = XmlToArray::convert($xml); - $this->assertSame(['items' => $array], XmlToArray::convert($xml)); + + $this->assertSame(['items' => $array], $convertedArr); } public function sameMultiDimensionalData() @@ -139,4 +146,44 @@ public function sameMultiDimensionalData() ], ]; } + + /** + * @dataProvider sameMultiDimensionalData + * + * @test + */ + public function convert_WhenXmlHasNewLinesAndCarrigageReturns_ShouldCorrectConvertToArray(array $array) + { + $xml = " + \r\n + \r\n + \r\n + \r\n + Luke Skywalker \r\n + Lightsaber \r\n + \r\n + \r\n + Captain America \r\n + Shield \r\n + \r\n + \r\n + \r\n + \r\n + Sauron \r\n + Evil Eye \r\n + \r\n + \r\n + Darth Vader \r\n + Lightsaber \r\n + \r\n + \r\n + + "; + + $arrayExpected['root'] = $array; + + $convertedArr = XmlToArray::convert($xml); + + $this->assertSame($arrayExpected, $convertedArr); + } }