Есть ли способ изменить тип содержимого XML-документа в XML-документе? - PullRequest
0 голосов
/ 19 декабря 2008

Есть ли способ изменить тип содержимого XML-документа в XML-документе?

Я работаю с действительно старой системой, которая передает обратно HTML (и мы пытаемся заставить его возвращать XML). Я извлекаю его из XMLHttpRequest и, используя netcat, заметил, что он не передает никаких заголовков типа контента.

Когда я получаю XMLHttpRequest.responseXML, текст responseText существует, но responseXML равен нулю.

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

Ответы [ 3 ]

1 голос
/ 19 декабря 2008

Нет. Content-Type, как вы к нему обращаетесь (в комментариях к вашему вопросу), является частью заголовков HTTP.

А HTTP - это просто средство транспортировки для (скажем) XML-документов. Они являются полезными данными, они ничего не знают о заголовках HTTP, поэтому они не могут их изменить.

Что вы, вероятно, имеете в виду: «Есть ли эквивалент в <meta http-equiv="... в XML. Нет, нет. Даже HTML не может изменить заголовки HTTP, он может только заставить пользовательский агент вести себя иначе. HTML-файл был сохранен на диск, и при загрузке пользовательские агенты не получили никаких заголовков.

В XML вся необходимая информация находится в инструкции по обработке (<?xml version="1.0" encoding="UTF-8"?>) в верхней части файла. Для правильной загрузки / отображения информации заголовка не требуется.

0 голосов
/ 19 декабря 2008

Я понял, что нужно взять строку xhr.responseText и создать из нее документ XML:

function createDOMFromString(sXml){

    var browser = navigator.appName;
    var oXmlDom = null;

    // IE Implementation...
    if(browser == "Microsoft Internet Explorer") {
         oXmlDom=new ActiveXObject("Microsoft.XMLDOM");
         oXmlDom.async="false";
         oXmlDom.loadXML(sXml);
    }
    // FF Implementation...
    else {
        var oParser = new DOMParser();
        oXmlDom = oParser.parseFromString(sXml, "text/xml");
    }
    // TODO: If we need it Safari implementation.

    return oXmlDom;
}

Ура! * * 1004

0 голосов
/ 19 декабря 2008

номер

К тому времени, когда UA сможет добраться до любого такого тега, он уже должен был бы решить, какой документ он анализирует.

...