JavaScript 格式化并高亮 XML 字符串的方法及注意事项
本文介绍利用 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(' ');
}
t = t.join("");
list.push(t + '<<span class="code-key">'+ element.nodeName +'</span>>\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 + ' <<span class="code-key">' + nodeName +
'</span>>' + value_txt + '</<span class="code-key">' + nodeName + '</span>>\n';
list.push(item);
} else {
build_xml(++index, list, element.childNodes[i]);
}
}
list.push(t + '</<span class="code-key">'+ element.nodeName +'</span>>\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;}
最终呈现的效果。

解析注意事项
需要注意以下事项。
在使用 DOMParser 解析 XML 字符串时,若字符串中包含特殊字符,解析生成的树节点中可能包含无需处理的节点,这可能导致遍历节点时出现失败。
总结。
以上介绍了使用 JavaScript 格式化并高亮 XML 字符串的方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
Mock.js 拦截失效或数据格式错误的常见原因及排查
2026-11-05 10:11:59
Java和JavaScript名字像但没关系:辨析Java、JavaWeb与JS
2026-11-04 09:30:54
CodePen、JSFiddle与RunJS对比:哪款JS在线运行工具更适合你?
2026-11-03 16:46:57
JS 统计图渲染空白或报错怎么排查?常见问题解决指南
2026-11-03 09:49:40
flv.js 常见报错 MediaError 与解码失败排查指南
2026-11-02 10:29:29
