使用js对xml格式的字符串进行格式化输出。

//格式化xml
	function formatXml(){
           var str = $('xml').value;		
         //去除输入框中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("jsp/xmlStyle.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;
		   $('xml').value =finalStr;
	}

   除上述的js代码之外,还需要创建一个xsl格式文件。

<?xml version="1.0" ?>
  <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> 

  

    上述代码来自语孟子的文章,添加部分内容解释:

 

omit-xml-declaration = "yes"

    可选。 "yes" 规定在输出中省略 XML 声明 (<?xml...?>)。 "no" 规定应在输出中包含 XML 声明。默认是 "no"。

 

 

indent = "yes"

    可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。Netscape 6 不支持该属性。 

 

 

 <xsl:template match="/ | @* | node()"> 

    match中内容定义该模板包括 xml的全部分支,包括节点和属性。

 

 

<xsl:copy>

   将中间的内容拷贝到输出文件。

 

 

 <xsl:apply-templates select="@* | node()"/> 

    <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。

    这里选择的xpath为xml全部属性以及任何类型的节点。

 

    对于各个节点的作用以及使用,可以访问

    http://www.w3school.com.cn/xsl/xsl_w3celementref.asp 。里面讲的都很细致。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值