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 相关文章推荐
jQuery实现复选框成对选择及对应取消的方法
Mar 03 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
vue路由插件之vue-route
Jun 13 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 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 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
使用jquery实现以post打开新窗口
2014/03/19 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python脚本处理空格的方法
2016/08/08 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
TensorFlow的权值更新方法
2018/06/14 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
python实现Virginia无密钥解密
2019/03/20 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
服装销售人员求职自我评价
2013/09/26 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
护校行动方案
2014/05/31 职场文书
国际商务专业求职信
2014/07/15 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书