У вас должно быть что-то кросс-браузерное, совместимое с DOMParser или DOMDocument.Конечно, я не уверен, что вы хотите проанализировать URL-адрес XML или строку XML.Для XML-URL я рекомендую:
if (window.XMLHttpRequest) return new window.XMLHttpRequest();
else if (window.ActiveXObject) {
// the many versions of IE's XML fetchers
var AXOs = [
'MSXML2.XMLHTTP.6.0',
'MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP',
'MSXML.XMLHTTP'
];
for (var i = 0; i < AXOs.length; i++) {
try { return new ActiveXObject(AXOs[i]); }
catch() { continue; }
}
return null;
}
Для XML-строки этот блок кода будет работать лучше:
if (window.DOMParser) return (new DOMParser()).parseFromString(str, 'text/xml');
else if (window.ActiveXObject) {
var doc;
// the many versions of IE's DOM parsers
var AXOs = [
'MSXML2.DOMDocument.6.0',
'MSXML2.DOMDocument.5.0',
'MSXML2.DOMDocument.4.0',
'MSXML2.DOMDocument.3.0',
'MSXML2.DOMDocument',
'Microsoft.XMLDOM',
'MSXML.DOMDocument'
];
for (var i = 0; i < AXOs.length; i++) {
try { doc = new ActiveXObject(AXOs[i]); break; }
catch() { continue; }
}
if (!doc) return createElement('div', null);
if (doc.async) doc.async = false;
doc.loadXML(str);
return doc;
}
return createElement('div', null);
Объекты DOMDocument поддерживают метод load () для загрузкиXML из URL, но его синтаксис отличается от методов XMLHttpRequest и XMLHTTP.
DOMDocument (по крайней мере из документов MSDN) также содержит методы XMLHTTP, поэтому вы можете чередовать DOMDocument в массиве AXOs, но я не уверен в этом.Кроме того, я не могу представить, чтобы DOMDocument был на месте без XMLHTTP.