Вот пример, который использует $ .ajax и работает кросс-браузер (ну, Chrome, IE8, FireFox 3.6):
var pathToXML = "http://www.site.com/data/data.xml";
var xml;
$.ajax({type: "GET",
url: pathToXML,
cache: false,
dataType: ($.browser.msie) ? "text" : "xml",
error: function(XMLHttpRequest, textStatus, errorThrown){alert(textStatus)},
success: function(data){
// workaround for msie
if (typeof data == "string") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false; xml.loadXML(data);
} else { xml = data; }
xml.setProperty("SelectionLanguage", "XPath");
// end workaround
// use $(xml).find('node').text();
var bobsNodeValue = $(xml).find("node[id='bob']").text();
}});
Это также устанавливает его как фактический XML, который jQuery может проходить, как обычное дерево DOM, используя .find()
и .text()
.
РЕДАКТИРОВАТЬ :: Просто прочитайте новые комментарии к вопросу. Можете ли вы опубликовать пример неудачного XML здесь? Кроме того, использование .html()
, вероятно, приведет к ошибкам, тогда как .text()
должно возвращать пустую строку для пустых узлов.
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ :: Вот скрипка , показывающая без ошибок, какой код вы используете для обхода и все ли это браузеры или только определенный?