logo

使用 XslCompiledTransform 将 XML 文件转换成字符串

作者:孟宪会 阅读:302 发表于:2011-12-02 21:26:23

以前的方法是采用XslTransform.Transform 方法(http://dotnet.aspx.cc/article/651cb7ee-2a14-4473-58e4-4a38e4cf6d4b/read.aspx),现在已经提示过时,可以采用下面的方法替代。例子中的1.xsl文件

1.xsl 代码
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:dc
="http://purl.org/dc/elements/1.1/" version="1.0">
  
<xsl:template match="//rss">
    
<html>
      
<body>
        
<h1>
          
<xsl:value-of select="/rss/channel/title"/>
        
</h1>
        
<p>
          
<xsl:value-of select="/rss/channel/description"/>
        
</p>
        
<xsl:element name="a">
          
<xsl:attribute name="href">
            
<xsl:value-of select="link"/>
          
</xsl:attribute>
          阅读全部……
        
</xsl:element>
        
<xsl:for-each select="/rss/channel/item">
          
<h2>
            
<xsl:value-of select="title"/>
          
</h2>
          
<hr/>
          
<p>
            
<xsl:value-of select="description" disable-output-escaping="yes"/>
          
</p>
          
<p>
            
<xsl:element name="a">
              
<xsl:attribute name="href">
                
<xsl:value-of select="link"/>
              
</xsl:attribute>
              阅读全部……
            
</xsl:element>
          
</p>
          
<p style="color: #ccc; font-size: 0.7em;">
            
<xsl:value-of select="dc:creator"/>
          
</p>
          
<p style="color: #ccc; font-style: italic; font-size: 0.7em;">
            
<xsl:value-of select="dc:date"/>
          
</p>
        
</xsl:for-each>
      
</body>
    
</html>
  
</xsl:template>
</xsl:stylesheet>

 

 转换代码

C# 代码
System.Xml.Xsl.XslCompiledTransform RssXslt = new System.Xml.Xsl.XslCompiledTransform();
RssXslt.Load(Server.MapPath(
"~/1.xsl"));
System.IO.StringWriter resultString
= new System.IO.StringWriter();
RssXslt.Transform(
"http://dotnet.aspx.cc/Rss.aspx", null, resultString);
Response.Write(resultString.ToString());

VB.NET 代码
Dim RssXslt As New System.Xml.Xsl.XslCompiledTransform()
RssXslt.Load(Server.MapPath(
"~/1.xsl"))
Dim resultString As System.IO.StringWriter = New System.IO.StringWriter()
RssXslt.Transform(
"http://dotnet.aspx.cc/Rss.aspx", Nothing, resultString)
Response.Write(resultString.ToString())