源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

如何使用Javascript正则表达式来格式化XML内容

  • 时间:2020-03-09 00:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:如何使用Javascript正则表达式来格式化XML内容
使用得是Emeditor ,在看XML文档时,总是因为格式混乱而看不清。这个是一个Emeditor宏来自动格式化XML。下载:[url=http://xiazai.jb51.net/201307/yuanma/formatXml_jb51net.rar][b]formatXml.rar[/b] [/url](1,021.00 bytes) 下面这段是这个网页版的javascript格式化XML的代码。
[u]复制代码[/u] 代码如下:
<!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>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部