jQuery 的 .find() 方法可在解析后的 XML 文档对象上使用,需先用 DOMParser 将 XML 字符串转为 XMLDocument,再用 $() 包装;支持 CSS 选择器查找元素,但需注意大小写敏感、无默认命名空间支持,并须用 .text() 或 .attr() 提取内容。

JQuery 的 .find() 方法可以在 XML 数据上使用,但前提是 XML 已被正确解析为浏览器原生的 XML 文档对象(XMLDocument),而不是字符串。jQuery 本身不直接解析 XML 字符串,需先用原生 API(如 DOMParser)将其转为文档对象,再用 jQuery 包装后调用 .find()。
确保 XML 是有效的文档对象
jQuery 只能对 DOM 节点(包括 XML 节点)执行 .find()。如果手头是 XML 字符串,必须先解析:
- 用
new DOMParser().parseFromString(xmlStr, "text/xml")得到XMLDocument - 检查解析是否成功(如
doc.querySelector("parsererror")是否存在) - 再用
$(doc)包装,才能调用.find()
用 .find() 查找 XML 元素(支持标签名、属性、CSS 选择器)
包装后的 XML 文档对象支持常见选择器,例如:
-
$(xmlDoc).find("book")—— 查所有元素 -
$(xmlDoc).find("author[name='鲁迅']")—— 查name属性为“鲁迅”的 -
$(xmlDoc).find("book > title")—— 查的直接子元素
注意:XML 区分大小写,且无默认命名空间支持;若含命名空间,需手动处理前缀或使用 XPath(jQuery 不原生支持带 ns 的 CSS 选择器)。
获取内容或属性要显式调用 .text() 或 .attr()
.find() 返回的是 jQuery 对象,不是原始文本。要提取值,需链式调用:
-
$(xmlDoc).find("title").text()→ 获取第一个的文本内容 -
$(xmlDoc).find("book").attr("id")→ 获取第一个的id属性值 - 遍历多个结果:
$(xmlDoc).find("author").each(function() { console.log($(this).text()); })
常见坑:别对字符串直接调用 .find()
下面写法是错的:
挺不错的jQuery饼状图插件,装载数据也是非常方便的直接输出在table表格中,然后再绘出饼状图展现百分比,鼠标放上去会显示想要比例的数据,还是很不错的,虽然没有Highcharts.js功能那么强,至少饼状图是够用了。
❌ var xmlStr = "
$(xmlStr).find("item"); // 这里 $(xmlStr) 实际创建的是 HTML 片段,会出错或行为异常
正确做法始终是先解析再包装:
✅ var xmlDoc = new DOMParser().parseFromString(xmlStr, "text/xml");
if (!xmlDoc.querySelector("parsererror")) {
var items = $(xmlDoc).find("item");
}
基本上就这些。核心就两点:XML 必须是解析后的文档对象;后续操作和 HTML 一样,只是内容结构由你定义。









