原生 JavaScript 解析 XML 字符串与文档:XMLHttpRequest + DOMParser

一只小鹿
一只小鹿
发布时间:2026-10-14 | 6人浏览过
原创

在 Web 开发中,解析 XML 数据是常见需求。虽然现代开发更多使用 JSON,但许多遗留系统或特定标准仍依赖 XML。本文将通过原生 JavaScript,演示如何在不依赖 jQuery 等库的情况下,利用 XMLHttpRequest 获取 XML 数据,并使用 DOMParser 将 XML 字符串安全地解析为可操作的 DOM 对象。

核心实现方案概述

解析 XML 的核心逻辑分为两步:
1. 获取 XML 原始数据:通常通过 XMLHttpRequest (Ajax) 从服务器异步或同步获取。
2. 解析数据:获取到 XML 字符串(responseText)后,使用浏览器内置的 DOMParser API 将其转换为标准的 DOM 树,以便使用标准 DOM 方法(如 getElementsByTagName)进行查询和操作。

准备工作

确保浏览器支持 XMLHttpRequest 和 DOMParser。前者兼容 IE7+ 及所有现代浏览器,后者在现代浏览器中均受支持(IE 8+ 支持,早期版本需使用 Microsoft.XMLDOM)。以下方案主要针对现代浏览器及 IE9+ 环境优化。

具体操作步骤

第 1 步:创建 XMLHttpRequest 对象

目的:建立网络请求通道,兼容不同版本的浏览器(主要是处理老版 IE 的 ActiveXObject)。

  • 操作:检测 window.XMLHttpRequest 是否存在,若存在则实例化;否则尝试创建 ActiveXObject。
var XMLHttp = null;
if (window.XMLHttpRequest) {
  // 现代浏览器
  XMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  // IE5/IE6 旧式浏览器
  XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

第 2 步:配置请求与设置回调(以异步为例)

目的:定义当服务器返回数据时如何处理,并发起请求。异步模式不会阻塞主线程,推荐优先使用。

  • 入口:XMLHttp 对象实例。
  • 动作:监听 onreadystatechange 事件,检查 readyState === 4(完成)且 status === 200 或 304(成功)。
if (XMLHttp !== null) {
  XMLHttp.onreadystatechange = function() {
    if (XMLHttp.readyState === 4) {
      if (XMLHttp.status === 200 || XMLHttp.status === 304) {
        // 在此处进行解析和处理
        console.log('数据接收完成');
      }
    }
  };
  
  // 初始化请求:GET 方式获取 test1.xml
  XMLHttp.open("get", "test1.xml", true); // true 表示异步
  XMLHttp.send();
}

第 3 步:解析 XML 字符串为 DOM 对象

目的:将接收到的文本内容转换为结构化的 DOM 对象,从而能够像操作 HTML DOM 一样操作 XML。

  • 关键参数:DOMParser.parseFromString(text, mimeType)。
  • 注意:推荐使用 text/xml 作为 MIME 类型。如果服务器直接返回了正确的 DOM 对象(responseXML),也可直接使用,但显式使用 parseFromString 能更好控制解析过程并统一处理 XML 字符串的情况。
// 在 onreadystatechange 的成功分支内
var XMLDoc = XMLHttp.responseText; // 获取原始 XML 字符串
var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");

// 验证是否解析成功
var parseError = XMLDom.getElementsByTagName(
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表