2011-06-29 8 views
2

xml文字列をHTML文字列に変換するために.NETクラスライブラリでXslCompiledTransformを使用しようとしています。私はファイルではなく普通の文字列を使いたいと考えてください。XSLを.NET XslCompiledTransformクラスを使用して有効なHTMLフラグメントに変換するXslCompiledTransformクラス

これはどのように行うのですか? XslCompiledTransformはファイルだけで動作するようです

...

答えて

4

Load()XmlReaderを受け入れ、そしてTransform()XmlReader入力、およびXmlWriterTextWriterおよび出力としてStreamのほとんどの組み合わせを受け入れます。

最も一般的には、出力には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(); 
} 
0

私は が、その後にStringWriter、 を使用してHTMLに変換し、同じ.aspxページ上で生成される文字列の形式で使用するXSLTおよびXML、 を持っていませんリテラルコントロールを使用してhtmlを表示し、Stringwriterデータをバインドします。

string xslt = "ここにxsltのコードを追加"; //通常のxsltファイルを探します。

string xml = "ここにxmlのコードを追加"; //通常の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(); 
関連する問題