X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fparser%2Fxml%2Fclass_XmlParser.php;h=1e25cc50710bba41129748a5e63c9beda81988e5;hp=1281cb4d74a6fb418e6bfffc64b79b4d2a945d98;hb=fdc6a02b5e6c2155cda61fcc345c7583b734ab85;hpb=f00cb649d0efc2353eba6ba98d13a85e589788e9 diff --git a/inc/classes/main/parser/xml/class_XmlParser.php b/inc/classes/main/parser/xml/class_XmlParser.php index 1281cb4d..1e25cc50 100644 --- a/inc/classes/main/parser/xml/class_XmlParser.php +++ b/inc/classes/main/parser/xml/class_XmlParser.php @@ -2,11 +2,11 @@ /** * A Xml Parser class * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2013 Core Developer Team * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org + * @link http://www.shipsimu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ class XmlParser extends BaseParser implements Parseable { * @param $templateInstance A CompileableTemplate instance * @return $parserInstance An instance of this parser */ - public final static function createXmlParser (CompileableTemplate $templateInstance) { + public static final function createXmlParser (CompileableTemplate $templateInstance) { // Get a new instance $parserInstance = new XmlParser(); @@ -63,19 +63,28 @@ class XmlParser extends BaseParser implements Parseable { */ public function parseXmlContent ($content) { // Convert all to UTF8 - if (function_exists('recode')) { + if (empty($content)) { + // No empty content! + self::createDebugInstance(__CLASS__)->debugOutput('Empty content! Backtrace:
');
+			debug_print_backtrace();
+			self::createDebugInstance(__CLASS__)->debugOutput('
'); + exit(); + } elseif (function_exists('recode')) { // Recode found, so use it $content = recode('html..utf8', $content); + } elseif (function_exists('mb_convert_encoding')) { + // Use mb_convert_encoding() + $content = mb_convert_encoding($content, 'UTF-8', 'auto'); } else { // @TODO We need to find a fallback solution here - $this->partialStub('Cannot find recode extension!'); + $this->partialStub('Cannot find recode/mbstring extension!'); } // END - if // Get an XML parser $xmlParser = xml_parser_create(); // Force case-folding to on - xml_parser_set_option($xmlParser, XML_OPTION_CASE_FOLDING, true); + xml_parser_set_option($xmlParser, XML_OPTION_CASE_FOLDING, TRUE); // Set UTF-8 xml_parser_set_option($xmlParser, XML_OPTION_TARGET_ENCODING, 'UTF-8'); @@ -87,13 +96,13 @@ class XmlParser extends BaseParser implements Parseable { xml_set_object($xmlParser, $templateInstance); // Set handler call-backs - xml_set_element_handler($xmlParser, 'startElement', 'endElement'); + xml_set_element_handler($xmlParser, 'startElement', 'finishElement'); xml_set_character_data_handler($xmlParser, 'characterHandler'); // Now parse the XML tree if (!xml_parse($xmlParser, $content)) { // Error found in XML! - //* DEBUG: */ die('
'.htmlentities($content).'
'); + //* DEBUG: */ exit(__METHOD__ . ':
'.htmlentities($content).'
'); throw new XmlParserException(array($this, $xmlParser), self::EXCEPTION_XML_PARSER_ERROR); } // END - if