JavaScript 格式化并高亮 XML 字符串的方法及注意事项

作者:桌面漫游时间:2026-10-22 16:47:55浏览:382

本文介绍利用 JavaScript 的 DOMParser 解析 XML 字符串,并通过递归遍历生成格式化及高亮显示的 HTML 代码。重点说明 DOMParser 在 IE9 以上浏览器的兼容性,以及处理特殊字符可能导致节点解析异常的风险。

XML 格式化核心原理

实现该功能主要涉及两个关键点。

第一,利用 DOMParser 对 XML 字符串进行解析;第二,通过递归方式遍历生成的 XML 树结构,并按指定格式输出每个节点。

关于 DOMParser 的使用情况。

该方法在 IE9 及以上版本的浏览器以及其他现代浏览器中均得到支持,因此本文不再赘述 IE9 以下版本不支持的情况。具体使用细节可参考相关文档。

https://developer.mozilla.org/en-US/docs/Web/API/DOMParser

代码实现与样式

以下是相关的 JavaScript 代码实现。


/**
 * 格式化xml
 * @param content
 * @returns {*}
 */
this.parse_xml = function(content) {
  let xml_doc = null;
  try {
    xml_doc = (new DOMParser()).parseFromString(content.replace(/[\n\r]/g, ""), 'text/xml');
  } catch (e) {
    return false;
  }

  function build_xml(index, list, element) {
    let t = [];
    for (let i = 0; i < index; i++) {
      t.push('&nbsp;&nbsp;&nbsp;&nbsp;');
    }
    t = t.join("");
    list.push(t + '&lt;<span class="code-key">'+ element.nodeName +'</span>&gt;\n');
    for (let i = 0; i < element.childNodes.length; i++) {
      let nodeName = element.childNodes[i].nodeName;
      if (element.childNodes[i].childNodes.length === 1) {
        let value = element.childNodes[i].childNodes[0].nodeValue;
        let value_color = !isNaN(Number(value)) ? 'code-number' : 'code-string';
        let value_txt = '<span class="'+ value_color +'">' + value + '</span>';
        let item = t + '&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span class="code-key">' + nodeName +
          '</span>&gt;' + value_txt + '&lt;/<span class="code-key">' + nodeName + '</span>&gt;\n';
        list.push(item);
      } else {
        build_xml(++index, list, element.childNodes[i]);
      }
    }
    list.push(t + '&lt;/<span class="code-key">'+ element.nodeName +'</span>&gt;\n');
  }
  let list = [];
  build_xml(0, list, xml_doc.documentElement);
  return list.join("");
};

配套的 CSS 样式定义。


.code-string{color:#993300;}
.code-number{color:#cc00cc;}
.code-boolean{color:#000033;}
.code-null{color:magenta;}
.code-key{color:#003377;font-weight:bold;}

最终呈现的效果。

XML 格式化核心原理

解析注意事项

需要注意以下事项。

在使用 DOMParser 解析 XML 字符串时,若字符串中包含特殊字符,解析生成的树节点中可能包含无需处理的节点,这可能导致遍历节点时出现失败。

总结。

以上介绍了使用 JavaScript 格式化并高亮 XML 字符串的方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!

作者最新文章