不是$()
,使用$.parseXML
解析XML字符串。 (更新:參見下面的說明,在jQuery的1.5加入parseXML
但它很容易,如果你想將其添加到一箇舊版本),它會給你一個原始XML文檔;你可以使用$()
來獲得該文檔的jQuery包裝。
像這樣:
var xml =
"<?xml version='1.0' encoding='utf-8' ?>" +
"<RecentTutorials>" +
"<Tutorial author='The Reddest'>" +
"<Title>Silverlight and the Netflix API</Title>" +
"<Categories>" +
"<Category>Tutorials</Category>" +
"<Category>Silverlight 2.0</Category>" +
"<Category>Silverlight</Category>" +
"<Category>C#</Category>" +
"<Category>XAML</Category>" +
"</Categories>" +
"<Date>1/13/2009</Date>" +
"</Tutorial>" +
"</RecentTutorials>";
$($.parseXML(xml)).find("Tutorial").each(function() {
var author = $(this).attr("author");
});
Live example
如果您是通過ajax
加載XML,你通常沒有這樣做,因爲jQuery將你做它作爲加載的一部分序列,然後給你的XML文檔作爲data
參數你success
回調,但如果你只是有一個任意字符串,並且要分析它,parseXML
是這項工作的工具。
ajax
例如:
$.ajax({
url: "the/url/to/load/the/xml/from",
method: "GET",
dataType: "xml",
success: function(data) {
var xdoc = $(data); // Note that jQuery has already done the parsing for us
display("Getting tutorials");
var tutorials = xdoc.find("Tutorial");
display("Found: " + tutorials.length);
tutorials.each(function() {
display("Tutoral author: " + $(this).attr("author"));
});
},
error: function(jxhr, status, err) {
display("Ajax error: status = " + status + ", err = " + err);
}
});
Live copy
更新:parseXML
加入的jQuery在V1.5。如果可以,請升級到最新使用它。如果你不能,如果你有使用一個過時的版本,您可以輕鬆地添加功能,以您自己的腳本。與jQuery的許多地方,它是很好的自包含的jQuery的源:
jQuery.parseXML = function(data , xml , tmp) {
if (window.DOMParser) { // Standard
tmp = new DOMParser();
xml = tmp.parseFromString(data , "text/xml");
} else { // IE
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = "false";
xml.loadXML(data);
}
tmp = xml.documentElement;
if (! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror") {
jQuery.error("Invalid XML: " + data);
}
return xml;
};
我的第一個例子中的Here's a live copy,但使用jQuery 1.4.4加上以上。
使用jQuery.parseXML但錯誤。 – beginner 2011-03-13 09:37:28
@beginner:*什麼*錯誤? (提示:在尋求幫助時,*從不*說「..但我得到了一個錯誤。」說「......但我得到了這個錯誤:____」。)正如你從鏈接的例子中看到的那樣, XML是格式良好的,並且這樣(和你引用的XML是)。 – 2011-03-13 09:38:47
@beginner:我也加了一個'ajax'的例子。 – 2011-03-13 09:42:48