使用PHP的XML读取脚本不完全读取某些元素


XML reading script using PHP incompletely reads some elements

我有一个XML数据源URL,从那里我使用读取数据。它包含学生信息,我从中提取成绩并将其编译成一个数组。

问题是当我在本地运行这个脚本时,它工作正常,所有的成绩都正确列出/收集在数组中。然而,当我在共享服务器上运行此脚本时,除了正常的年级名称外,我还得到了一些错误读取的成绩,例如"花园"。数组中还记录了完整的年级名称"Kindergarten",这意味着仅读取特定元素存在问题。

我想到的第一个疑点是读字节长度。我已经把它改成了8192,但是运气不好。

以下是php文件中的相关代码块:
if (!($xml_parser = xml_parser_create())) die("Couldn't create parser.");
xml_set_element_handler( $xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler( $xml_parser, "characterDataHandler");
while( $data = fread($fp, 8192)){ 
if(!xml_parse($xml_parser, $data, feof($fp))) {
break;}}
xml_parser_free($xml_parser);

任何想法吗?

我发现了这个问题并自己修复了它。

问题是,在循环中,使用读取数据块,我同时使用XML解析器转换数据,这导致了问题,因为数据流并不总是有一个完整的标签。我从该点删除了解析器,以便仅在脚本读取了所有数据后才运行它。

这就解决了问题