[TASK] Make InvalidXmlFileException for language files more verbose 02/52002/2
authorAndreas Fernandez <a.fernandez@scripting-base.de>
Fri, 10 Mar 2017 11:14:45 +0000 (12:14 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 10 Mar 2017 21:39:13 +0000 (22:39 +0100)
The message of the InvalidXmlFileException, thrown when parsing broken
language files now always shows the last occured error in libxml with
the affected file and line.

Resolves: #80224
Releases: master, 7.6
Change-Id: I49949119db73f0c09d997a3e2cf45bf86a9587c8
Reviewed-on: https://review.typo3.org/52002
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Classes/Localization/Parser/AbstractXmlParser.php
typo3/sysext/core/Classes/Localization/Parser/LocallangXmlParser.php

index 9039f57..2dc368d 100644 (file)
@@ -107,7 +107,11 @@ abstract class AbstractXmlParser implements \TYPO3\CMS\Core\Localization\Parser\
         $rootXmlNode = simplexml_load_string($xmlContent, 'SimpleXMLElement', LIBXML_NOWARNING);
         libxml_disable_entity_loader($previousValueOfEntityLoader);
         if (!isset($rootXmlNode) || $rootXmlNode === false) {
-            throw new InvalidXmlFileException('The path provided does not point to existing and accessible well-formed XML file.', 1278155988);
+            $xmlError = libxml_get_last_error();
+            throw new InvalidXmlFileException(
+                'The path provided does not point to existing and accessible well-formed XML file. Reason: ' . $xmlError->message . ' in ' . $this->sourcePath . ', line ' . $xmlError->line,
+                1278155988
+            );
         }
         return $this->doParsingFromRoot($rootXmlNode);
     }
index 74b3448..2cda8ba 100644 (file)
@@ -180,7 +180,11 @@ class LocallangXmlParser extends AbstractXmlParser
             libxml_disable_entity_loader($previousValueOfEntityLoader);
         }
         if (!isset($rootXmlNode) || $rootXmlNode === false) {
-            throw new InvalidXmlFileException('The path provided does not point to existing and accessible well-formed XML file (' . $targetPath . ').', 1278155987);
+            $xmlError = libxml_get_last_error();
+            throw new InvalidXmlFileException(
+                'The path provided does not point to existing and accessible well-formed XML file. Reason: ' . $xmlError->message . ' in ' . $targetPath . ', line ' . $xmlError->line,
+                1278155987
+            );
         }
         return $this->doParsingTargetFromRoot($rootXmlNode);
     }