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

来源:互联网 发布:js调用php函数 编辑:程序博客网 时间:2024/05/13 18:41

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

 

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

 

       strResultXmlContent = 待转化的xml字符串;

// 获取字符串文件流

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

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

                XslCompiledTransformxslt = new XslCompiledTransform();

                xslt.Load(_XslFilePath);

                XPathDocumentXDoc = new XPathDocument(stream);

                TextWritertw = new StringWriter();

                XmlWriterwriter = XmlWriter.Create(tw);

                xslt.Transform(XDoc, null, writer);

                stringXmlContent = 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=newActiveXObject("Microsoft.XMLDOM");

                xmlDoc.async=false;

                xmlDoc.loadXML(strXml);

                var xslspec=newActiveXObject("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=newRegExp("&apos;","g");

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

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

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

                reg=newRegExp("space;","g");

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

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

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

                return strPageContent;

     }

 

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


 

原创粉丝点击