2008-12-19 3 views
0

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

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

Когда я получаю XMLHttpRequest.responseXML, responseText существует, но responseXML имеет значение null.

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

+0

Что вы подразумеваете под контентом? MIME, DTD, XSchema, или что? –

+0

http-заголовки, Content-type: text/xml или application/xml – leeand00

ответ

1

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

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

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

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

0

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

0

Я понял это, это вопрос принятия строки 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; 
} 

Ура!

+0

Эй, я не могу проверить свой ответ ... и это тот, который сработал! – leeand00

+0

Никто не может проверить свой ответ (или все будут). Честно говоря, разве вы не должны задавать вопрос более четко в первую очередь? Ваше изменение имело большое значение, вопрос был близок к непонятному в его исходном состоянии. Пожалуйста, не ожидайте, что ваши читатели будут иметь провиденциальные полномочия ... – Tomalak

 Смежные вопросы

  • Нет связанных вопросов^_^