【问题标题】:Transforming Xml into valid Html fragments through Xslt using .NET XslCompiledTransform class使用 .NET XslCompiledTransform 类通过 Xslt 将 Xml 转换为有效的 Html 片段
【发布时间】:2011-06-29 19:29:36
【问题描述】:

我正在尝试在 .NET 类库中使用 XslCompiledTransform,以便将 xml 字符串转换为 Html 字符串。请考虑我想使用普通字符串,而不是文件。

我该怎么做?

看来XslCompiledTransform 只适用于文件...

【问题讨论】:

    标签: c# .net html xml xslt


    【解决方案1】:

    Load() 也接受XmlReaderTransform() 接受XmlReader 输入和XmlWriterTextWriterStream 的大多数组合作为输出。

    因此,最常见的情况是,您可以使用StringWriter 作为输出,并使用从StringReader 创建的XmlReader 作为输入。

    完整示例,无文件:

    string xslt = @"<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
    <xsl:output method=""html"" indent=""no""/>
    <xsl:template match=""*"">
    <p>some html</p>
    </xsl:template>
    </xsl:stylesheet>", xml = @"<xml>boo</xml>";
    
    var transform = new XslCompiledTransform();
    using (var sr = new StringReader(xslt))
    using (var xr = XmlReader.Create(sr))
    {
        transform.Load(xr);
    }
    
    using (var sw = new StringWriter())
    using (var sr = new StringReader(xml))
    using (var xr = XmlReader.Create(sr))
    {
        transform.Transform(xr, null, sw);
        string html = sw.ToString();
    }
    

    【讨论】:

      【解决方案2】:

      我以字符串的形式使用 xslt 和 xml, 它是在同一个 .aspx 页面上生成的, 然后使用 StringWriter 将其转换为 html, 使用文字控件显示 html,将 Stringwriter 数据绑定到它。

      string xslt="Add your code for xslt here";//查找任何正常的 xslt 文件。

      string xml="Add your code for xml here";//查找任何普通的xml文件。

              XslCompiledTransform transform = new XslCompiledTransform();
      
              StringReader sr = new StringReader(xslt);
      
              XmlReader xr = XmlReader.Create(sr);
      
              transform.Load(xr);
      
      
              StringReader srxml = new StringReader(xml);
      
              XmlReader xrxml = XmlReader.Create(srxml);
      
              StringWriter writer = new StringWriter();
      
              transform.Transform(xrxml, null, writer);
      
              Literal1.Text = writer.ToString();
      
              writer.Close();
      

      【讨论】:

        猜你喜欢
        • 2014-03-08
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 2023-03-26
        相关资源
        最近更新 更多