Браузер не читает весь XML-файл - PullRequest
1 голос
/ 17 мая 2010

У меня есть файл XML, написанный сценарием PHP. Данные для файла XML собираются из нескольких различных RSS-каналов. Скрипт PHP вызывается каждые 5 минут заданием Cron. Сценарий PHP может занять 5-10 секунд, чтобы написать файл XML.

Вот проблема: после того, как XML-файл написан, я могу открыть его через DreamWeaver и прочитать все очень хорошо - но когда я ввожу URL-адрес XML-файла в мой веб-браузер (IE или Firefox), я получаю «XML-анализ» Ошибка: неправильно сформированная "Ошибка в браузере. Когда я выполняю «Просмотр»> «Источник» в браузере, файл XML кажется неполным, но когда я открываю файл непосредственно с сервера, он завершается.

Кто-нибудь знает, что здесь происходит?

Ответы [ 4 ]

0 голосов
/ 19 мая 2010

В итоге ответ был связан с кодировкой из исходных RSS-каналов. Исходные каналы были закодированы с использованием ISO-8859-1, и это необходимо было преобразовать в UTF-8 перед записью данных в мой файл XML.

//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-файл.

0 голосов
/ 17 мая 2010

Может помочь копирование / вставка XML-файла.

Я подозреваю, что Dreamweaver принимает в качестве файла XML что-то, что на самом деле не является XML (проблема с объектом или с зарезервированным символом XML) или что у вас проблема с кодировкой. Есть ли у вас символы вне набора символов ASCII 127?

Джером Вагнер

0 голосов
/ 18 мая 2010

Это длинный выстрел, но вы можете проверить, устанавливаете ли вы недопустимый заголовок " Content-Length ". Это заставит браузер частично загрузить файл.

0 голосов
/ 17 мая 2010

Что ж, может быть тем, что XML находится в другой кодировке, чем та, которую веб-сервер указывает в заголовках Это может все испортить.

Я предлагаю вам использовать Wireshark , чтобы увидеть, действительно ли данные доставляются правильно. Также обратите внимание на сам документ XML и его кодировку содержимого, а не на тот, который указан веб-сервером.

Что произойдет, если вы сделаете «Сохранить как ...» из браузера и попытаетесь открыть результат? Это вполне может игнорировать кодировку содержимого, указанную в заголовках, и просто вывести файл на диск - если я прав, он должен правильно открыться в редакторе XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...