1. 程式人生 > >js格式化xml字串

js格式化xml字串

無論在輸入xml字串或顯示xml字串,都要判斷xml的正確性。

以下是js格式化後臺xml字串。

//格式化xml
function formatXml(str){	
     //去除輸入框中xmll兩端的空格。 
       str = str.replace(/^\s+|\s+$/g,""); 
       var source = new ActiveXObject("Msxml2.DOMDocument"); 
      //裝載資料 
       source.async = false; 
       source.loadXML(str);    
	   // 裝載樣式單 
	   var stylesheet = new ActiveXObject("Msxml2.DOMDocument"); 
	   stylesheet.async = false; 
	   stylesheet.resolveExternals = false; 
	   stylesheet.load(path+"/XlsTmpl/temp/format.xsl"); 
	   
	   // 建立結果物件 
	   var result = new ActiveXObject("Msxml2.DOMDocument"); 
	   result.async = false; 
	   
	   // 把解析結果放到結果物件中方法1 
	   source.transformNodeToObject(stylesheet, result); 
	   //alert(result.xml);
	   if(result.xml==''||result.xml==null){
			alert('xml報文格式錯誤,請檢查');
			return false;
		   }
	   var finalStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +result.xml;
	   return finalStr;
}

注意:其需要一個檔案xsl,使用時直接copy即可。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="utf-8"/>
	<xsl:template match="/ | @* | node()">
		<xsl:copy>
			<xsl:apply-templates select="@* | node()"/>
		</xsl:copy>
	</xsl:template>
</xsl:stylesheet>

這樣話,在輸入時,若返回false,則可以驗證。在顯示時,可以格式化。