Я пытаюсь проанализировать файл XML с помощью PHP, но я получаю сообщение об ошибке:
ошибка синтаксического анализатора: Char 0x0 из допустимый диапазон в
Я думаю, что это из-за содержания XML, я думаю, что есть специальный символ «☆», какие-нибудь идеи, что я могу сделать, чтобы это исправить?
Я также получаю:
ошибка парсера : Преждевременный конец данных в строке элемента тега
Что может быть причиной этой ошибки?
Я использую simplexml_load_file
.
Я пытаюсь найти строку ошибки и вставьте его содержимое как один XML-файл, и он может работать! поэтому я до сих пор не могу понять, что делает сбой анализа XML-файла. PS это огромный XML-файл размером более 100M, произойдет ли ошибка синтаксического анализа?
У вас есть контроль над XML? Если это так, убедитесь, что данные заключены в блоки ..
]]>
.
И вам также необходимо удалить недопустимые символы:
/**
* Removes invalid XML
*
* @access public
* @param string $value
* @return string
*/
function stripInvalidXml($value)
{
$ret = "";
$current;
if (empty($value))
{
return $ret;
}
$length = strlen($value);
for ($i=0; $i < $length; $i++)
{
$current = ord($value{$i});
if (($current == 0x9) ||
($current == 0xA) ||
($current == 0xD) ||
(($current >= 0x20) && ($current <= 0xD7FF)) ||
(($current >= 0xE000) && ($current <= 0xFFFD)) ||
(($current >= 0x10000) && ($current <= 0x10FFFF)))
{
$ret .= chr($current);
}
else
{
$ret .= " ";
}
}
return $ret;
}
Если у вас есть контроль над данными, убедитесь, что они закодированы правильно (то есть в кодировке, которую вы обещали в теге xml, например, если у вас есть:
<?xml version="1.0" encoding="UTF-8"?>
, то вы необходимо убедиться, что ваши данные находятся в кодировке UTF-8.
Если у вас нет контроля над данными, кричите на тех, кто владеет им.
Вы можете использовать такой инструмент, как xmllint , чтобы проверить, какой часть (и) данных недействительна.
Убедитесь, что ваш источник XML действителен. См. http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references