XSLT转换XML的前后台实现方法

    这里简单记录一下使用 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 转义文件路径,同时再对特殊字符进行处理,否则就不能在页面中正常显示页面元素了。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值