Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 浏览器未读取整个XML文件_Php_Xml - Fatal编程技术网

Php 浏览器未读取整个XML文件

Php 浏览器未读取整个XML文件,php,xml,Php,Xml,我有一个由PHP脚本编写的XML文件。XML文件的数据是从几个不同的RSS提要收集的。Cron作业每5分钟调用一次PHP脚本。PHP脚本可能需要5-10秒来编写XML文件 问题是:在编写XML文件后,我可以通过DreamWeaver打开它,然后很好地读取所有内容——但是当我将XML文件的URL输入到我的Web浏览器(IE或Firefox)中时,浏览器中会出现“XML解析错误:格式不正确”错误。当我在浏览器中查看>源代码时,XML文件看起来不完整-但是当我直接从服务器上打开文件时,它就完成了 有人

我有一个由PHP脚本编写的XML文件。XML文件的数据是从几个不同的RSS提要收集的。Cron作业每5分钟调用一次PHP脚本。PHP脚本可能需要5-10秒来编写XML文件

问题是:在编写XML文件后,我可以通过DreamWeaver打开它,然后很好地读取所有内容——但是当我将XML文件的URL输入到我的Web浏览器(IE或Firefox)中时,浏览器中会出现“XML解析错误:格式不正确”错误。当我在浏览器中查看>源代码时,XML文件看起来不完整-但是当我直接从服务器上打开文件时,它就完成了

有人知道这里发生了什么吗?

嗯,可能是XML的编码与web服务器在标题中指定的编码不同。那会把事情搞砸的

我建议您使用查看数据是否实际正确传递。还可以查看XML文档本身及其内容编码,而不是web服务器指定的编码


如果在浏览器中执行“另存为…”并尝试打开结果,会发生什么情况?这可能会忽略标题中指定的内容编码,而只是将文件转储到磁盘-如果我是对的,那么应该在XML编辑器中正确打开它。

复制/粘贴XML文件可能会有所帮助

我怀疑Dreamweaver接受的xml文件不是真正的xml(实体或xml保留字符的问题),或者您有编码问题。是否有ASCII 127字符集之外的字符


杰罗姆·瓦格纳(Jerome Wagner)

这不太可能,但您可以检查是否设置了无效的“内容长度””标题。
这将导致浏览器部分下载文件

答案最终是处理来自原始RSS提要的编码。原始提要使用ISO-8859-1编码,在将数据写入XML文件之前,需要将其转换为UTF-8

//Get Data from source URL
$xml = file_get_contents("http://www.sourceurl.com/someting.rss");
//Convert from ISO to UTF
$xml = mb_convert_encoding($xml, 'UTF-8', mb_detect_encoding($xml, 'UTF-8, ISO-8859-1', true)); 

完成后,我可以遍历$xml,但我需要它,并将数据写入我的个性化xml文件。显然,ISO-8895-1编码中有一些字符在写入XML文件之前没有被正确解释。

此外,如果我通过DreamWeaver打开文件并执行“另存为…”,然后将新文件上载到服务器,我可以通过Web浏览器正确查看新文件。复制并粘贴“查看>源”靠近XML文档断裂的地方。现在仔细看,浏览器告诉我“在文本内容中发现了无效字符。错误处理资源…”因此,当我从原始RSS提要读取它时,它可能与编码有关。XML真的很长,我不认为粘贴到这里是可行的,但是没有任何明显奇怪的字符。只需在XML中断的地方贴几行就行了。我也遇到过这种情况,我在那里有一个无效的换行符或空格字符,这让我很难看清。查看删除任何空行是否有帮助。