用 XMLHttpRequest 获取 XML 数据需三步:声明 responseType 或 Accept 头确保获取 XML;检查 status/readyState 并用 DOMParser 补救 responseXML 为空;再用 DOM 方法提取数据并全面错误处理。
用 XMLHttpRequest 获取 XML 数据,核心是设置请求头、正确解析响应、再按需提取内容。现代浏览器都支持,但细节容易出错。
如果不明确告诉浏览器“我要 XML”,responseXML 可能为空或解析失败。
request.responseType = 'document'(推荐),确保返回 DOM 文档对象request.setRequestHeader('Accept', 'application/xml'),提示服务端返回 XMLapplication/xml 或 text/xml),responseXML 仍可能为 null,此时可用 DOMParser 手动解析 responseText
不能直接信任 responseXML,要检查是否有效。
request.status === 200 和 request.readyState === 4
request.responseXML && request.responseXML.documentElement 是否存在responseXML 为 null,用 new DOMParser().parseFromString(request.responseText, 'text/xml') 补救parserError 元素(如 Chrome/Firefox 中的 parsererror 标签),判断是否解析失败拿到 responseXML(即 Document 对象)后,就和操作 HTML 一样:
getElementsByTagName('item') 获取节点列表querySelector('book title') 或 querySelectorAll('author[name="zhang"]') 精准定位textContent(兼容性好)或 innerHTML(仅当含标签时)getAttribute('id') 或 element.id(部分属性有快捷方式)XML 请求失败原因多,只看 status=200 不够。
onerror 回调必须监听parsererror 节点i
tem.getElementsByTagName('price')[0]?.textContent 前加可选链或判断长度),否则中文可能乱码不复杂但容易忽略。关键就是三步:声明要 XML、安全接住它、像操作网页一样查数据。