我正在尝试使用PHP解析XML文件,但出现错误消息:
解析器错误:字符0x0超出允许的范围
我认为这是因为XML的内容所致,我认为有一个特殊的符号“☆”,我有什么想法可以解决该问题?
我也得到:
解析器错误:标签项目行中的数据过早结束
是什么导致该错误?
我正在使用simplexml_load_file。
simplexml_load_file
我尝试找到错误行并将其内容粘贴为单个xml文件,它可以正常工作!所以我仍然不知道是什么使xml文件解析失败。PS这是一个超过100M的巨大xml文件,会引起解析错误吗?
您可以控制XML吗?如果是这样,请确保将数据括在<![CDATA[.. ]]>块中。
<![CDATA[
]]>
并且您还需要清除无效字符:
/** * 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; }