7

Каждый раз, когда я открываю XML-файл, я получаю только пустую страницу вместо дерева тегов. Сам файл правильный и загружается нормально, я вижу его через View Source или в Firebug. Я попытался отключить все свои дополнения и попытался запустить Firefox в безопасном режиме, но проблема не была решена.

Я предполагаю, что я как-то испортил свою конфигурацию, и теперь Firefox пытается отобразить XML-файлы как HTML-файлы. Я пробовал гуглить, но безуспешно. Помогите, пожалуйста?

UPD: файл примера: http://lj.lain.ru/3/1273657698603.sample.xml Также я заметил, что почему-то все браузеры на компьютере теперь работают одинаково, поэтому я соответствующим образом меняю вопрос

6 ответов6

3

Если файл XML искажен, то браузер не будет знать, что с ним делать, и по моему опыту ничего не показывает.

Если файл XML valid то большинство браузеров (IE8, Chrome и Firefox) выдают сообщение типа This XML file does not appear to have any style information associated with it. The document tree is shown below. и перейдите в специальный режим для отображения файлов XML с такими функциями, как возможность свернуть блоки кода.

Посмотрите здесь: XML Validator

3

Я только что получил и решил аналогичную проблему: из моего приложения ASP.NET MVC у меня есть контроллер, который возвращает необработанный XML, который я хочу видеть в веб-браузере в виде дерева DOM.

Chrome делает это хорошо, но IE 11 просто показывает пустую страницу.

Похоже, что проблема заключается в HTTP-заголовке «Content-Type»: если он не содержит значения кодировки, IE просто показывает пустую страницу (если у вас нет заголовка Content-Disposition, и в этом случае IE предлагает вам сохранить XML),

Итак, следующий ответ HTTP подходит для Chrome, но IE показывает пустую страницу:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693

<?xml version="1.0" encoding="utf-16"?><data>...</data>

Примечание: Убедитесь, что вы указали правильную Content-Length, хотя я не проверял, что происходит, если заголовок Content-Length отсутствует или имеет неправильное значение. Кроме того, я удалил из этой распечатки X-заголовки, сгенерированные IIS, но их безопасно оставить.


Но следующее работает и в IE, и в Chrome:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693

<?xml version="1.0" encoding="utf-16"?><data>...</data>

Единственная разница это дополнение ; charset=utf-8 в заголовке Content-Type.

Для разработчиков ASP.NET MVC это означает, что если вы хотите визуализировать сырой XML и поддерживать IE, вы не можете использовать:

string xmldata = ...
return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml");

Вместо этого работает следующее:

string xmldata = ...
Response.ContentType = "application/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length));
return this.Content(xmldata);

С уважением.

0

В дополнение к тому, что написали другие, некоторые / большинство веб-браузеров не могут отображать файлы XML, написанные в соответствии со стандартом XML 1.1.

Firefox покажет сообщение об ошибке, указывающее на версию 1.1 в прологе xml.

<?xml version="1.1"?>
---------------^

Internet Explorer просто покажет пустую страницу.

Если вы разработчик программного обеспечения, помните, что отсутствие поддержки XML 1.1 ограничено не только веб-браузерами. Также отсутствует поддержка XML 1.1 во многих языках программирования. (т.е. анализатор DOM по умолчанию в Java 8 не поддерживает XML 1.1). Вы можете предпочитать XML версии 1.0, если у вас есть выбор.

Конечно, вы можете просто удалить пролог из вашего XML-файла. Но это не всегда работает. (то есть узлы xml могут содержать некоторые специальные управляющие символы, которые были запрещены в версии 1.0).

0

Это относится к Firefox, но я считаю, что стоит попробовать:

Перейдите в раздел «Справка \ Устранение неполадок» в меню Firefox и нажмите кнопку, чтобы открыть папку с вашим профилем.

Сделайте резервную копию, а затем удалите файл mimeTypes.rdf, закройте все экземпляры Firefox и снова откройте Firefox.

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

0

Есть ли у xml тег вверху, похожий на этот?

<?xml version="1.0"?>

Это подготовит браузер, чтобы он знал, что делать.

0

Если вы загружаете XML с сервера, вам нужно установить тип контекста заголовка text/xml.

Например, в PHP вы должны поместить это перед вашим выводом текста:

header("Content-type: text/xml");

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .