JavaScript如何处理XML数据 JS解析XML字符串教程

10次阅读

javaScript处理xml主要用domParser解析字符串为XML文档,需检查parserError、安全访问节点、处理命名空间;旧版IE则回退到ActiveXObject。

JavaScript如何处理XML数据 JS解析XML字符串教程

javascript处理XML数据主要靠DOMParser解析字符串为XML文档对象,再用标准DOM方法遍历和提取内容。关键在于正确创建解析器、捕获错误、安全访问节点——尤其要注意浏览器兼容性和XML格式合法性。

用DOMParser解析XML字符串

这是现代浏览器的标准方式,支持将XML文本转为可操作的Document对象。

  • 创建DOMParser实例,调用parseFromString(),第二个参数必须是"text/xml""application/xml"
  • 解析失败时不会抛错,但返回的文档中documentElementNULL,或存在元素
  • 示例:let xmlStr = “<a href="https://seo.sqjnqi.com/tag/js/"><b>js</b></a>指南 59.9“;
    let parser = new DOMParser();
    let xmlDoc = parser.parseFromString(xmlStr, “text/xml”);
    if (xmlDoc.querySelector(“parsererror”)) { console.error(“XML格式错误”); }

安全读取XML节点内容

避免直接访问可能不存在的节点导致TypeError,推荐先检查再取值。

  • querySelector()getElementsByTagName()获取元素,再用textContent读文本内容(比innerhtml更安全)
  • 对属性值使用getAttribute(),并提供默认值处理缺失情况
  • 示例:let title = xmlDoc.querySelector(“title”)?.textContent || “未知标题”;
    let price = parseFloat(xmlDoc.querySelector(“price”)?.textContent) || 0;

处理命名空间XML(如SOAP、atom

含命名空间的XML需在查询时显式声明前缀,或使用getElementsByTagNameNS()

立即学习Java免费学习笔记(深入)”;

  • 若XML有xmlns:ns="http://example.com",查询时写ns:title(需先在DOMParser前注册命名空间,但多数场景直接用getElementsByTagNameNS("*", "title")更简单)
  • 推荐方式:let titles = xmlDoc.getElementsByTagNameNS(“*”, “title”);
    for (let el of titles) { console.log(el.textContent); }
  • 注意IE旧版不支持getElementsByTagNameNS,需降级用getElementsByTagName配合localName判断

兼容旧版IE(IE8及以下)

这些浏览器不支持DOMParser,需用ActiveXObject("microsoft.XMLDOM")替代。

  • 先检测window.DOMParser是否存在,否则回退到ActiveX对象
  • 设置async = false并调用loadXML(),再检查parseError.errorCode !== 0判断是否失败
  • 节点操作API基本一致,但部分方法名不同(如text代替textContent
text=ZqhQzanResources