程序员之家 >> 文章 >> XML家族 >> XSLT
XSLT转换XML的前后台实现方法
作者:娜   来源:csdn   发布者:admin
时间:2009-07-03 13:24:52   点击:827

里简单记录一下使用 C# 对 xml 进行 xsl 转义的方法,可以分为两种方法,一种为客户端脚本转化和服务器端转换,下面分别看看这两种方法的具体实现方式:

首先,先看一下服务器端转义的方法,具体的转化代码如下:

       strResultXmlContent = 待转化的xml 字符串 ;

// 获取字符串文件流

                Stream stream = new MemoryStream (System.Text.Encoding .UTF8.GetBytes(strResultXmlContent));

                // 获取XSL 解析文件,并生成公文列表

                XslCompiledTransform xslt = new XslCompiledTransform ();

                xslt.Load(_XslFilePath);

                XPathDocument XDoc = new XPathDocument (stream);

                TextWriter tw = new StringWriter ();

                XmlWriter writer = XmlWriter .Create(tw);

                xslt.Transform(XDoc, null , writer);

                string XmlContent = tw.ToString();

        writer.Close();

 

只进行转化,还不能算是完全成功,还必须考虑到在拼组xml 字符串的时候,可能出现的一些特殊字符,这其中有一些必须要处理的常见字符,我们必须使用不会引发转化异常的替代符号代替才成,而且在顺利通过了转化后,还必须要再替换回的一些字符:

 

// 替换"&lt;" 到"<"

            strResultXmlContent = strResultXmlContent.Replace("&lt;" , "<" );

            // 替换"&gt;" 到">"

            strResultXmlContent = strResultXmlContent.Replace("&gt;" , ">" );

            // 替换"&apos;" 到"\\\'"

            strResultXmlContent = strResultXmlContent.Replace("&apos;" , "\\\'" );

            // 替换"&quot;" 到"\\\""

            strResultXmlContent = strResultXmlContent.Replace("&quot;" , "\\\"" );

            // 替换"space;" 到"&nbsp;"

            strResultXmlContent = strResultXmlContent.Replace("space;" , "&nbsp;" );

            // 替换"&amp;" 到"&"

    strResultXmlContent = strResultXmlContent.Replace("&amp;" , "&" );

 

其中的空格,使用了自定义的space; 这些都是完全可定义的,只要不影响xsl 转化即可。

 

下面再看一下客户端脚本的转化方式:

function TransmitXmlToHTML(strXml, strXsltPath){

                var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

                xmlDoc.async=false;

                xmlDoc.loadXML(strXml);

                var xslspec=new ActiveXObject("Microsoft.XMLDOM");

                xslspec.async=false;

                xslspec.load(strXsltPath);

                var strPageContent = xmlDoc.transformNode(xslspec);

           

                var reg=new RegExp("&lt; ","g");

                strPageContent = strPageContent.replace(reg, "<");

                reg=new RegExp("&gt; ","g");

                strPageContent = strPageContent.replace(reg, ">");

                reg=new RegExp("&apos;","g");

                strPageContent = strPageContent.replace(reg, "\\\'");

                reg=new RegExp("&quot; ","g");

                strPageContent = strPageContent.replace(reg, "\\\"");

                reg=new RegExp("space;","g");

                strPageContent = strPageContent.replace(reg, "&nbsp; ");

                reg=new RegExp("&amp; ","g");

                strPageContent = strPageContent.replace(reg, "&");

                return strPageContent;

      }

对照来看,需要提供待转化xml 字符串和xsl 转义文件路径,同时再对特殊字符进行处理,否则就不能在页面中正常显示页面元素了。

最新文章
点击排行