本文实例讲述了JavaScript格式化json和xml的方法。分享给大家供大家参考,具体如下:

  格式化json实例

  原生js格式化json的方法

  //格式化代码函数,已经用原生方式写好了不需要改动,直接引用就好

  var formatJson=function (json, options) {

  var reg=null,

  formatted='',

  pad=0,

  PADDING=' ';

  options=options || {};

  options.newlineAfterColonIfBeforeBraceOrBracket=(options.newlineAfterColonIfBeforeBraceOrBracket===true) ? true : false;

  options.spaceAfterColon=(options.spaceAfterColon===false) ? false : true;

  if (typeof json !=='string') {

  json=JSON.stringify(json);

  } else {

  json=JSON.parse(json);

  json=JSON.stringify(json);

  }

  reg=/([\{\}])/g;

  json=json.replace(reg, '\r

  $1\r

  ');

  reg=/([\[\]])/g;

  json=json.replace(reg, '\r

  $1\r

  ');

  reg=/(\,)/g;

  json=json.replace(reg, '$1\r

  ');

  reg=/(\r

  \r

  )/g;

  json=json.replace(reg, '\r

  ');

  reg=/\r

  \,/g;

  json=json.replace(reg, ',');

  if (!options.newlineAfterColonIfBeforeBraceOrBracket) {

  reg=/\:\r

  \{/g;

  json=json.replace(reg, ':{');

  reg=/\:\r

  \[/g;

  json=json.replace(reg, ':[');

  }

  if (options.spaceAfterColon) {

  reg=/\:/g;

  json=json.replace(reg, ':');

  }

  (json.split('\r

  ')).forEach(function (node, index) {

  var i=0,

  indent=0,

  padding='';

  if (node.match(/\{$/) || node.match(/\[$/)) {

  indent=1;

  } else if (node.match(/\}/) || node.match(/\]/)) {

  if (pad !==0) {

  pad -=1;

  }

  } else {

  indent=0;

  }

  for (i=0; i < pad; i++) {

  padding +=PADDING;

  }

  formatted +=padding + node + '\r

  ';

  pad +=indent;

  }

  );

  return formatted;

  };

  //引用示例部分

  //(1)创建json格式或者从后台拿到对应的json格式

  var originalJson=;

  //(2)调用formatJson函数,将json格式进行格式化

  var resultJson=formatJson(originalJson);

  //(3)将格式化好后的json写入页面中

  document.getElementById("writePlace").innerHTML='

  ' +resultJson + '

  ';

  这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:

  {

  "name":"binginsist",

  "sex":"男",

  "age":"25"

  }

  格式化xml实例

  在格式化XML时后台需要对返回数据做一下处理:

  StringEscapeUtils.escapeHtml(po.getMsgBody())

  原生js格式化xml的方法

  //格式化代码函数,已经用原生方式写好了不需要改动,直接引用就好

  String.prototype.removeLineEnd=function () {

  return this.replace(/(<.>

  }

  function formatXml(text) {

  //去掉多余的空格

  text='

  ' + text.replace(/()/g, function ($0, name, props) {

  return name + ' ' + props.replace(/\s+(\w+=)/g, " $1");

  }).replace(/>\s*?

  //把注释编码

  text=text.replace(/

  /g, '\r').replace(//g, function ($0, text) {

  var ret='';

  //alert(ret);

  return ret;

  }).replace(/\r/g, '

  ');

  //调整格式

  var rgx=/

  (|\s*?(/)>)(?:.*?(?:(?:(/)>)|(?:)))?)/mg;

  var nodeStack=[];

  var output=text.replace(rgx, function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) {

  var isClosed=(isCloseFull1=='/') || (isCloseFull2=='/' ) || (isFull1=='/') || (isFull2=='/');

  //alert([all,isClosed].join('='));

  var prefix='';

  if (isBegin=='!') {

  prefix=getPrefix(nodeStack.length);

  }

  else {

  if (isBegin !='/') {

  prefix=getPrefix(nodeStack.length);

  if (!isClosed) {

  nodeStack.push(name);

  }

  }

  else {

  nodeStack.pop();

  prefix=getPrefix(nodeStack.length);

  }

  }

  var ret='

  ' + prefix + all;

  return ret;

  });

  var prefixSpace=-1;

  var outputText=output.substring(1);

  //alert(outputText);

  //把注释还原并解码,调格式

  outputText=outputText.replace(/

  /g, '\r').replace(/(\s*)/g, function ($0, prefix, text) {

  //alert(['[',prefix,']=',prefix.length].join(''));

  if (prefix.charAt(0)=='\r')

  prefix=prefix.substring(1);

  text=unescape(text).replace(/\r/g, '

  ');

  var ret='

  ' + prefix + '';

  //alert(ret);

  return ret;

  });

  return outputText.replace(/\s+$/g, '').replace(/\r/g, '\r

  ');

  }

  function getPrefix(prefixIndex) {

  var span=' ';

  var output=[];

  for (var i=0; i < prefixIndex; ++i) {

  output.push(span);

  }

  return output.join('');

  }

  //引用示例部分

  //(1)创建xml格式或者从后台拿到对应的xml格式

  var originalXml='ToveJaniReminder Dont forget me this weekend! ';

  //(2)调用formatXml函数,将xml格式进行格式化

  var resultXml=formatXml(originalXml);

  //(3)将格式化好后的formatXml写入页面中

  document.getElementById("writePlace").innerHTML='

  ' +resultXml + '

  ';

  这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:

  Tove

  Jani

  Reminder

  Dont forget me this weekend!

  PS:这里再为大家提供几款关于xml与json操作的在线工具供大家参考使用:

  希望本文所述对大家JavaScript程序设计有所帮助。

js格式化显示xml相关推荐

  1. php xml 格式化,PHP实现浏览器格式化显示XML的方法示例

    本文实例讲述了PHP实现浏览器格式化显示XML的方法.分享给大家供大家参考,具体如下: 在头部加上 header("Content-type: application/xml"); ...

  2. php 让浏览器格式化显示XML

    在头部加上 header("Content-type: application/xml"); 刚开始加上了发现还是不行.最近一直尝试最后终于找到解决办法.在代码最后加上exit;就 ...

  3. js格式化xml并高亮显示关键字

    w3school XML DOM - DOMParser 对象 DOMParser 解析 XML 标记来创建一个文档. 构造函数 new DOMParser() DOMParser 对象解析 XML ...

  4. 服务器端验证表单_Web表单开发之实时格式化显示——Cleave.js

    介绍 Cleave.js是一个帮助表单实现各种复杂实时格式化显示的工具库,可以说Cleave.js让表单的输入变得更加的高逼格,能实现很多复杂的表单格式化显示,简而言之就是针对<input/&g ...

  5. 格式化显示在Label控件中的金额格式文本 (2)

    通过Label控件的Text属性可以设置控件内显示的文本,而通过对象的ToString方法可以格式化字符串显示的格式.本实例设定在Label控件中金额的显示格式,运行结果如图1所示. <?XML ...

  6. js localdate上一个月_moment.js格式化日期,获取前一个月的时间

    下载moment.js 格式化当前日期: //显示结果为:"2017-09-20 15:35:52" moment(new Date()).format('YYYY-MM-DD H ...

  7. ElementUI中el-select请求springboot后台数据显示下拉项并在el-table中格式化显示

    场景 Vue+ElementUI+axios+SpringBoot前后端分离的后台管理系统. 将表格中某字段类似于状态等需要关联字典表进行筛选查询时.示例如下 注: 博客: https://blog. ...

  8. 解决vscode格式化代码html属性换行问题; ctrl+s格式化去除分号,格式化自动单引号;解决js格式化换行问题;mac上的settings.json完整配置

    右键格式化文档或者ctrl + s保存 html不换行 1.安装两个插件①vetur ②Prettier - Code formatter 2.在vetur的settings.json中设置 配置ct ...

  9. xml不显示css样式_如何使用CSS显示XML?

    xml不显示css样式 Introduction: 介绍: You must be aware of the term XML and must have dealt with these vario ...

  10. js 格式化 java时间格式化_用JavaScript(js)对时间格式化

    可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法. Date.prototype.format=functio ...

最新文章

  1. CanalAdapter启动过程分析(源码详解)
  2. 轻松理解牛顿迭代法且用其求平方根
  3. 诗与远方:无题(二十五)
  4. RHEL7 -- 修改主机名
  5. 为什么用自己的电脑部署服务器之后外网访问不到呢?并且该如何解决这个问题呢?...
  6. 新机发布会用鸿蒙吗,鸿蒙操作系统及华为全场景新品发布会即将到来,硬件生态发展有望迎来加速度...
  7. 自己的包增加为第三方包,使用Eclipse环境报Unresolved import错误(pycharm可用正常引用)...
  8. 电场在计算机专业的应用,电磁学在电力系统中的应用
  9. Windows超级管理器绿色单文件版V9.41下载 | 电脑任务管理器损坏可予以替代 | Windows超级管理器下载
  10. 2018云原生技术实践峰会CNBPS 重新定义云原生
  11. Lory的编程之旅就此启动
  12. 【Android组件化】javaPoet的使用
  13. SilverLight合计行设计
  14. 龙门架式焊接机器人_龙门架式焊接机器人系统设计
  15. python爬虫----汽车之家的汽车论坛的最新精华帖
  16. SQL Server代理(3/12):代理警报和操作员
  17. css获取时间,改变CSS 样式,获取当前日期
  18. Explore EPF021D ADC微控制器
  19. Java界面布局管理(简单)
  20. WPS Excel做多级下拉菜单列表

热门文章

  1. Cocos2dx--Cocos2dx与Android平台的跨平台调用
  2. cruisecontrol 持续化集成(运行bat脚本)
  3. 计算机网络应用基础试题6,计算机网络应用基础期末试卷试题2
  4. 主控域NTP时间同步(PTP时钟同步服务器)配置方法
  5. 高等代数100道题及答案解析
  6. 请教问题:ckeditor脚本错误“Error:例外被抛出且未被接住”[已解决]
  7. 基于Java的网上订餐系统(附:源码 课件)
  8. Color-UI 简介及使用教程
  9. android手游开发三维地图高清版,全球地图3D模拟器
  10. Java基础18 异常,Java面试题库