手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >如何使用Javascript正则表达式来格式化XML内容
如何使用Javascript正则表达式来格式化XML内容
摘要:使用得是Emeditor,在看XML文档时,总是因为格式混乱而看不清。这个是一个Emeditor宏来自动格式化XML。下载:formatXm...

使用得是Emeditor ,在看XML文档时,总是因为格式混乱而看不清。这个是一个Emeditor宏来自动格式化XML。下载:formatXml.rar (1,021.00 bytes)

下面这段是这个网页版的javascript格式化XML的代码。

复制代码 代码如下:

<!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+?)(?:ns*?(.+?=".*?"))/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 = '<>';

//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 + '<>';

//alert(ret);

return ret;

});

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

}

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"></textarea>

<div><input type="button" id="btnFormat" value="格式化"/></div>

<textarea id="output"></textarea>

</body>

</html>

【如何使用Javascript正则表达式来格式化XML内容】相关文章:

Javascript动态创建表格及删除行列的方法

JavaScript检测鼠标移动方向的方法

JavaScript判断图片是否已经加载完毕的方法汇总

javascript实现表格增删改操作实例详解

JavaScript正则表达式中的ignoreCase属性使用详解

javascript 动态添加表格行

Javascript的IE和Firefox兼容性汇编

JavaScript正则表达式之multiline属性的应用

简述JavaScript中正则表达式的使用方法

javascript模拟评分控件实现方法

精品推荐
分类导航