最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript格式化json和xml的方法示例

 更新時間:2019年01月22日 10:02:59   作者:yk10010  
這篇文章主要介紹了JavaScript格式化json和xml的方法,結(jié)合實例形式分析了javascript格式化json及格式化xml數(shù)據(jù)的具體操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript格式化json和xml的方法。分享給大家供大家參考,具體如下:

格式化json實例

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>原生js格式化json的方法</title>
</head>
<body>
<!--格式化后的json寫入的位置-->
<div id="writePlace"></div>
<script>
 //格式化代碼函數(shù),已經(jīng)用原生方式寫好了不需要改動,直接引用就好
 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\n$1\r\n');
  reg = /([\[\]])/g;
  json = json.replace(reg, '\r\n$1\r\n');
  reg = /(\,)/g;
  json = json.replace(reg, '$1\r\n');
  reg = /(\r\n\r\n)/g;
  json = json.replace(reg, '\r\n');
  reg = /\r\n\,/g;
  json = json.replace(reg, ',');
  if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
   reg = /\:\r\n\{/g;
   json = json.replace(reg, ':{');
   reg = /\:\r\n\[/g;
   json = json.replace(reg, ':[');
  }
  if (options.spaceAfterColon) {
   reg = /\:/g;
   json = json.replace(reg, ':');
  }
  (json.split('\r\n')).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\n';
     pad += indent;
    }
  );
  return formatted;
 };
 //引用示例部分
 //(1)創(chuàng)建json格式或者從后臺拿到對應(yīng)的json格式
 var originalJson = {"name": "binginsist", "sex": "男", "age": "25"};
 //(2)調(diào)用formatJson函數(shù),將json格式進行格式化
 var resultJson = formatJson(originalJson);
 //(3)將格式化好后的json寫入頁面中
 document.getElementById("writePlace").innerHTML = '<pre>' +resultJson + '<pre/>';
</script>
</body>
</html>

這里使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運行結(jié)果:

{
    "name":"binginsist",
    "sex":"男",
    "age":"25"
}

格式化xml實例

在格式化XML時后臺需要對返回數(shù)據(jù)做一下處理:

StringEscapeUtils.escapeHtml(po.getMsgBody())

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>原生js格式化xml的方法</title>
</head>
<body>
<!--格式化后的xml寫入的位置-->
<div id="writePlace"></div>
<script>
 //格式化代碼函數(shù),已經(jīng)用原生方式寫好了不需要改動,直接引用就好
 String.prototype.removeLineEnd = function () {
  return this.replace(/(<.+?\s+?)(?:\n\s*?(.+?=".*?"))/g, '$1 $2')
 }
 function formatXml(text) {
  //去掉多余的空格
  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) + '-->';
   //alert(ret);
   return ret;
  }).replace(/\r/g, '\n');
  //調(diào)整格式
  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 == '/');
   //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 = '\n' + prefix + all;
   return ret;
  });
  var prefixSpace = -1;
  var outputText = output.substring(1);
  //alert(outputText);
  //把注釋還原并解碼,調(diào)格式
  outputText = outputText.replace(/\n/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, '\n');
   var ret = '\n' + prefix + '<!--' + text.replace(/^\s*/mg, prefix) + '-->';
   //alert(ret);
   return ret;
  });
  return outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n');
 }
 function getPrefix(prefixIndex) {
  var span = ' ';
  var output = [];
  for (var i = 0; i < prefixIndex; ++i) {
   output.push(span);
  }
  return output.join('');
 }
 //引用示例部分
 //(1)創(chuàng)建xml格式或者從后臺拿到對應(yīng)的xml格式
 var originalXml = '<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note>';
 //(2)調(diào)用formatXml函數(shù),將xml格式進行格式化
 var resultXml = formatXml(originalXml);
 //(3)將格式化好后的formatXml寫入頁面中
 document.getElementById("writePlace").innerHTML = '<pre>' +resultXml + '<pre/>';
</script>
</body>
</html>

這里使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運行結(jié)果:

    Tove
    Jani
    Reminder
    Dont forget me this weekend!

PS:這里再為大家提供幾款關(guān)于xml與json操作的在線工具供大家參考使用:

在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.jb51.net/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat

在線json壓縮/轉(zhuǎn)義工具:
http://tools.jb51.net/code/json_yasuo_trans

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作XML文件技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • 10 種最常見的 Javascript 錯誤(頻率最高)

    10 種最常見的 Javascript 錯誤(頻率最高)

    本文是小編給大家收藏的JavaScript 中頻度最高的 10 種錯誤,我們會告訴你什么原因?qū)е铝诉@些錯誤,以及如何防止這些錯誤發(fā)生。需要的朋友參考下
    2018-02-02
  • layer父頁獲取彈出層輸入框里面的值方法

    layer父頁獲取彈出層輸入框里面的值方法

    今天小編就為大家分享一篇layer父頁獲取彈出層輸入框里面的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • Javascript中獲取對象的原型對象的方法小結(jié)

    Javascript中獲取對象的原型對象的方法小結(jié)

    這篇文章主要介紹了Javascript中獲取對象的原型對象的方法小結(jié),需要的朋友可以參考下
    2015-02-02
  • 跨域表單提交狀態(tài)的變相判斷代碼

    跨域表單提交狀態(tài)的變相判斷代碼

    通過表單在iframe內(nèi)向一個跨域的url提交的時候,如何判斷提交成功了呢?這個,基本上,很難,因為瀏覽器安全沙箱的限制,我們沒有辦法通過獲得iframe內(nèi)部不同域頁面的信息。
    2009-11-11
  • js判斷滾動條是否已到頁面最底部或頂部實例

    js判斷滾動條是否已到頁面最底部或頂部實例

    這篇文章主要介紹了js判斷滾動條是否已到頁面最底部或頂部的原理與方法,以實例的形式詳細分析了js實現(xiàn)返回頂部功能所涉及的各種技巧,并對相關(guān)知識點進行了總結(jié)歸納,需要的朋友可以參考下
    2014-11-11
  • iframe窗口高度自適應(yīng)的實現(xiàn)方法

    iframe窗口高度自適應(yīng)的實現(xiàn)方法

    這篇文章主要介紹了iframe窗口高度自適應(yīng)的實現(xiàn)方法,有需要的朋友可以參考一下
    2014-01-01
  • 用js實現(xiàn)判斷當(dāng)前網(wǎng)址的來路如果不是指定的來路就跳轉(zhuǎn)到指定頁面

    用js實現(xiàn)判斷當(dāng)前網(wǎng)址的來路如果不是指定的來路就跳轉(zhuǎn)到指定頁面

    用js實現(xiàn)判斷當(dāng)前網(wǎng)址的來路如果不是指定的來路就跳轉(zhuǎn)到指定頁面,需要的朋友可以參考下。
    2011-05-05
  • JavaScript的事件機制詳解

    JavaScript的事件機制詳解

    事件是將JavaScript腳本與網(wǎng)頁聯(lián)系在一起的主要方式,是JavaScript中最重要的主題之一。本文將詳細探討JavaScript的事件機制,并對比分析了瀏覽器之間的不同,具體內(nèi)容包括事件流、事件處理程序綁定方式、事件對象等。
    2017-01-01
  • 詳解JWT token心得與使用實例

    詳解JWT token心得與使用實例

    這篇文章主要介紹了詳解JWT token心得與使用實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • javascript encodeURI和encodeURIComponent的比較

    javascript encodeURI和encodeURIComponent的比較

    在進行SaaS前端開發(fā)的時候,大家經(jīng)常會用到兩個JavaScriptNative函數(shù):encodeURI 和 encodeURIComponent。這篇文章詳細解釋這兩個函數(shù)的用途并比較它們的不同之處
    2010-04-04

最新評論

康保县| 鸡西市| 保山市| 兴仁县| 高淳县| 昭苏县| 日照市| 中方县| 奇台县| 阜平县| 福安市| 衡南县| 蕲春县| 梅河口市| 高平市| 深泽县| 江陵县| 西平县| 如东县| 抚宁县| 皋兰县| 湟中县| 仪陇县| 当雄县| 潞城市| 宜君县| 金川县| 象州县| 河东区| 永嘉县| 和林格尔县| 威远县| 南投县| 潍坊市| 准格尔旗| 清原| 宁海县| 府谷县| 宝应县| 永嘉县| 高唐县|