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


Posted in Javascript onAugust 13, 2018

两个关键点

1.使用DOMParser解析xml
2.递归遍历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;}

效果

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

注意

DOMParser在解析xml时,如果xml字符串里有些特殊的字符,解出来的树节点有些是不需要的,会倒置遍历节点失败。

总结

以上所述是小编给大家介绍的Javascript格式化并高亮xml字符串,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
JS图片轮播与索引变色功能实例详解
Jul 06 Javascript
详解Js中的模块化是如何实现的
Oct 18 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
vue实现文件上传功能
Aug 13 #Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
Aug 13 #Javascript
实例详解BootStrap的动态模态框及静态模态框
Aug 13 #Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 #Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 #Javascript
Vue实现左右菜单联动实现代码
Aug 12 #Javascript
Vue中的v-for循环key属性注意事项小结
Aug 12 #Javascript
You might like
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
python实现windows下文件备份脚本
2018/05/27 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
公司周年庆典邀请函
2014/01/12 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
庆七一活动总结
2014/08/27 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers