js对json、xml字符串格式化(美化增强可读性)

目录

格式化json

格式化xml 


格式化json

json格式化工具:JSON在线编辑器-89工具网JSON编辑器在线是一个在线编辑JSON的编辑器工具,可以把JSON内容或JSON文件进行格式化解析,按JSON层级展现.当JSON格式出现问题,采用中文的方式提醒JSON错误内容,以及标记JSON解析错误位置.89Tool在线工具网是一个在线工具网,具有JSON工具,Cron生成器,JS加密解密工具等很多工具及教程文档.https://www.89tool.com/

 

function prettyFormat(str) {
  try {
    // 设置缩进为2个空格
    str = JSON.stringify(JSON.parse(str), null, 2);
    str = str
      .replace(/&/g, '&')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;');
    return str.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
      var cls = 'number';
      if (/^"/.test(match)) {
        if (/:$/.test(match)) {
          cls = 'key';
        } else {
          cls = 'string';
        }
      } else if (/true|false/.test(match)) {
        cls = 'boolean';
      } else if (/null/.test(match)) {
        cls = 'null';
      }
      return match;
    });
  } catch (e) {
    alert("异常信息:" + e);
  }
}

let jsonStr = JSON.stringify({ a: 1, b: 2 })
console.log("jsonStr:", jsonStr)
console.log("jsonStr格式化后:", prettyFormat(jsonStr))

格式化xml 

xml格式化工具:XML格式化 XML在线解析工具XML格式化工具是一款XML在线解析工具,提供XML格式化、XML压缩功能,格式化后的XML代码有着很高的可读性,颜色高亮显示代码,是程序员必备工具之一。https://tool.ip138.com/xml/

//格式化xml代码
function formateXml(xmlStr) {
  text = xmlStr;
  //使用replace去空格
  text = '\n' + text.replace(/(<\w+)(\s.*?>)/g, function ($0, name, props) {
    return name + ' ' + props.replace(/\s+(\w+=)/g, " $1");
  }).replace(/>\s*?</g, ">\n<");
  //处理注释
  text = text.replace(/\n/g, '\r').replace(/<!--(.+?)-->/g, function ($0, text) {
    var ret = '<!--' + escape(text) + '-->';
    return ret;
  }).replace(/\r/g, '\n');
  //调整格式	以压栈方式递归调整缩进
  var rgx = /\n(<(([^\?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(?:(\/)>)|(?:<(\/)\2>)))?)/mg;
  var nodeStack = [];
  var output = text.replace(rgx, function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) {
    var isClosed = (isCloseFull1 == '/') || (isCloseFull2 == '/') || (isFull1 == '/') || (isFull2 == '/');
    var prefix = '';
    if (isBegin == '!') {//!开头
      prefix = setPrefix(nodeStack.length);
    } else {
      if (isBegin != '/') {///开头
        prefix = setPrefix(nodeStack.length);
        if (!isClosed) {//非关闭标签
          nodeStack.push(name);
        }
      } else {
        nodeStack.pop();//弹栈
        prefix = setPrefix(nodeStack.length);
      }
    }
    var ret = '\n' + prefix + all;
    return ret;
  });
  var prefixSpace = -1;
  var outputText = output.substring(1);
  //还原注释内容
  outputText = outputText.replace(/\n/g, '\r').replace(/(\s*)<!--(.+?)-->/g, function ($0, prefix, text) {
    if (prefix.charAt(0) == '\r')
      prefix = prefix.substring(1);
    text = unescape(text).replace(/\r/g, '\n');
    var ret = '\n' + prefix + '<!--' + text.replace(/^\s*/mg, prefix) + '-->';
    return ret;
  });
  outputText = outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n');
  return outputText;
}

//计算头函数	用来缩进
function setPrefix(prefixIndex) {
  var result = '';
  var span = '    ';//缩进长度
  var output = [];
  for (var i = 0; i < prefixIndex; ++i) {
    output.push(span);
  }
  result = output.join('');
  return result;
}

let xmlStr = `<books name='1'><book><author>李刚</author><title>疯狂XML讲义</title><publisher>电子工业出版社</publisher></book><book><author>Developer</author><title>XML格式化工具</title><publisher>ip138.com</publisher></book></books>`
let a = formateXml(xmlStr)
console.log(a)

在node中 将格式化后的字符串写入test.xml中

const fs = require("fs")
fs.writeFileSync('test.xml', a)

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值