我正在尝试使用 PHP 解析 XML 文件,但收到错误消息:
解析器错误:字符 0x0 超出允许范围
我认为这是因为 XML 的内容,我认为有一个特殊符号“☆”,我能做些什么来修复它?
我还得到:
解析器错误:标签项行中数据过早结束
可能是什么原因导致该错误?
我在用着simplexml_load_file http://php.net/manual/en/function.simplexml-load-file.php.
Update:
我尝试找到错误行并将其内容粘贴为单个 xml 文件,它可以工作!所以我仍然无法弄清楚是什么导致 xml 文件解析失败。 PS这是一个超过100M的巨大xml文件,会导致解析错误吗?
您可以控制 XML 吗?如果是这样,请确保数据包含在<![CDATA[
.. ]]>
blocks.
并且还需要清除无效字符:
/**
* 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)