jQuery怎么解析XML数据 $.parseXML()方法

$.parseXML()将合法XML字符串解析为原生XML Document对象,需用$()包装后才能使用jQuery方法操作,解析失败会抛异常,须try-catch捕获。

jQuery 的 $.parseXML() 方法用于将格式良好的 XML 字符串解析为可用的 XML 文档对象(Document),方便后续用 jQuery 或原生 DOM 方法遍历和操作。

基本用法:把字符串转成 XML 文档

该方法只接受符合 XML 语法的字符串,返回一个标准的 XML Document 对象(不是 jQuery 对象)。如果字符串格式错误,会抛出异常,需用 try-catch 捕获。

  • 必须是严格格式的 XML(如根元素唯一、标签闭合、属性加引号)
  • 返回的是原生 DOM 文档对象,不是 $() 包装后的 jQuery 对象
  • 常见用途:处理 AJAX 返回的 XML 响应、本地 XML 字符串解析

解析后怎么用 jQuery 查找和读取内容

解析得到 XML 文档后,可传给 $() 包装,再用 jQuery 方法操作(注意:需指定上下文或用 .find() 等方法)。

var xmlStr = '苹果香蕉';
var xmlDoc = $.parseXML(xmlStr);
var $xml = $($xmlDoc); // 包装成 jQuery 对象

$xml.find('item').each(function() {
  var id = $(this).attr('id');
  var text = $(this).text();
  console.log(id + ': ' + text); // 输出 "1: 苹果", "2: 香蕉"
});

常见问题与注意事项

实际使用中容易踩坑,尤其在跨浏览器或处理响应时:

  • AJAX 默认不自动解析 XML,若服务器返回 XML,建议设 dataType: 'xml',jQuery 会自动调用 $.parseXML()
  • 不要直接对 XML 字符串用 $(),那会当成 HTML 解析,导致结构错乱
  • 中文字符需确保 XML 字符串编码与页面一致(通常 UTF-8),否则可能乱码
  • IE8 及更早版本对 XML 支持较弱,$.parseXML() 内部做了兼容处理,但建议测试

替代方案:不用 jQuery 也能解析

现代浏览器支持原生 DOMParser,更轻量且不依赖 jQuery:

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlStr, 'text/xml');
// 后续操作方式类似,$($xmlDoc) 仍可用

不过 $.parseXML() 在低版本 IE 中更稳妥,内部已封装兼容逻辑。

基本上就这些。核心就三点:字符串要合法、解析后记得包装、查找前确认上下文。不复杂但容易忽略细节。