2019独角兽企业重金招聘Python工程师标准>>>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><meta http-equiv=content-type content="text/html; charset=UTF-8"><title>Xml格式化工具</title><script type="text/javascript">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');//调整格式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);//把注释还原并解码,调格式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('');}        function btnFormat_click(){var $ = document.getElementById;$('output').value = formatXml($('input').value);}</script></head>
<body><textarea id="input" style="width:100%;height:45%;"></textarea><div style="margin:0px auto;"><input type="button" id="btnFormat" onclick="btnFormat_click()" value="格式化" style="width:50%;height:10%;"/></div><textarea id="output" style="width:100%;height:45%;"></textarea>
</body>
</html>

转载于:https://my.oschina.net/fanshuwanzi/blog/738321

使用Javascript正则表达式来格式化XML内容相关推荐

  1. 《JavaScript 正则表达式迷你书》知识点小抄本

    介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...

  2. JavaScript正则表达式快速判断技巧

    原文:JavaScript正则表达式快速判断技巧 这里是JS的正则的一点心得,并不是最完整的规则汇总,更侧重实际运用中的快速判断,初学者接触正则之后往往会被一堆星号括号给弄晕,有了一些速判技巧就能从整 ...

  3. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  4. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

  5. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  6. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  7. js php 正则差别,JavaScript正则表达式的浏览器的差异

    JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE.Firefox.Chrome.Safari.Opera,以当前版本为准)之间的差异整理 ...

  8. 玩转JavaScript正则表达式

    Why Regular Expression 我们先来看看,我们干哈要学正则表达式这玩意儿: 复杂的字符串搜寻.替换工作,无法用简单的方式(类似借助标准库函数)达成. 能够帮助你进行各种字符串验证. ...

  9. JavaScript正则表达式-基础入门

    JavaScript正则表达式-基础入门 字符类,如 /w/ 为匹配任何ASCII字符组成的字符 重复, 如 /w{1,3}/ 为匹配一到三个单词 选择.分组和引用 指定匹配位置 修饰符 直接量字符 ...

最新文章

  1. 包浆网图分分钟变高清,伪影去除、细节恢复更胜前辈AI,下载可玩|腾讯ARC实验室出品...
  2. N76E003介绍与开发资料获取
  3. linux shell 调试 检查 脚本
  4. [置顶]       Jquery为单选框checkbox绑定单击事件
  5. 【javascript 变量和作用域】
  6. 风能matlab仿真_发现潜力:使用计算机视觉对可再生风能发电场的主要区域进行分类(第1部分)
  7. (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
  8. java 取余_JAVA面试解析(有赞)
  9. 银行打电话不接有影响吗?
  10. EasyRecovery如何添加XML头文件标识
  11. EventLoop,TcpClient,TcpServer 中的生命周期
  12. 升级计算机的图形卡和驱动程序,Win10更新显卡驱动程序后无法开机怎么办?解决方案...
  13. k8s技术预研11--kubernetes网络原理
  14. 新加坡 计算机专业,【新加坡计算机类专业】 - 环外新加坡留学网
  15. lanyu 激活idea
  16. 修改电脑ip为固定ip不能上网
  17. win10 telnet不是内部或外部命令(已解决)
  18. DirectX11 With Windows SDK--34 位移贴图
  19. PMV热舒适模型计算
  20. Pixy原理及Opencv实现

热门文章

  1. java异常体系_JAVA异常体系结构详解
  2. git远程仓库上传及本地仓库创建
  3. 括号配对问题 -- ACM解决方法
  4. vim如何自动补全,ycm配置
  5. 生产者消费者模型(条件变量)
  6. Effective C++学习第七天
  7. mysql学习笔记12 其他函数
  8. 信号量sem_wait()的使用
  9. 浅谈dup和dup2的用法
  10. 进程常用指令 (从创建到回收 包含守护)