当前位置: 代码迷 >> JavaScript >> 运用js对xml格式的字符串进行格式化输出
  详细解决方案

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

热度:152   发布时间:2012-11-10 10:48:50.0
使用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 。里面讲的都很细致。

?

?

?

?

?

1 楼 guojianpeng9806 2010-05-14  
功能很强大,值得学习
2 楼 javaz 2010-05-14  
guojianpeng9806 写道
功能很强大,值得学习

谢谢夸奖。。呵呵呵。
  相关解决方案