196

C# を使用して XSLT スタイルシートを XML ドキュメントに適用し、出力をファイルに書き込みたいと考えています。

4

4 に答える 4

181

ここで可能な答えを見つけました:http://web.archive.org/web/20130329123237/http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

記事から:

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslTransform myXslTrans = new XslTransform() ;
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.html",null) ;
myXslTrans.Transform(myXPathDoc,null,myWriter) ;

編集:

しかし、私の信頼できるコンパイラは、XslTransform時代遅れであると言っています:XslCompiledTransform代わりに使用してください:

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.html",null);
myXslTrans.Transform(myXPathDoc,null,myWriter);
于 2008-08-29T07:10:36.953 に答える
143

Daren の優れた回答に基づいて、適切なXslCompiledTransform.Transform オーバーロードを使用することで、このコードを大幅に短縮できることに注意してください。

var myXslTrans = new XslCompiledTransform(); 
myXslTrans.Load("stylesheet.xsl"); 
myXslTrans.Transform("source.xml", "result.html"); 

(これを答えにして申し訳ありませんが、code blockコメントでのサポートはかなり限られています。)

VB.NET では、変数さえ必要ありません。

With New XslCompiledTransform()
    .Load("stylesheet.xsl")
    .Transform("source.xml", "result.html")
End With
于 2012-05-15T07:40:46.263 に答える
15

これは、MSDNのC#でXSL変換を行う方法に関するチュートリアルです。

http://support.microsoft.com/kb/307322/en-us/

そしてここにファイルを書く方法:

http://support.microsoft.com/kb/816149/en-us

補足として:検証も行いたい場合は、別のチュートリアル(DTD、XDR、およびXSD(= Schema)用)があります。

http://support.microsoft.com/kb/307379/en-us/

さらに情報を提供するためにこれを追加しました。

于 2010-10-26T10:55:03.557 に答える
4

これはあなたを助けるかもしれません

public static string TransformDocument(string doc, string stylesheetPath)
{
    Func<string,XmlDocument> GetXmlDocument = (xmlContent) =>
     {
         XmlDocument xmlDocument = new XmlDocument();
         xmlDocument.LoadXml(xmlContent);
         return xmlDocument;
     };

    try
    {
        var document = GetXmlDocument(doc);
        var style = GetXmlDocument(File.ReadAllText(stylesheetPath));

        System.Xml.Xsl.XslCompiledTransform transform = new System.Xml.Xsl.XslCompiledTransform();
        transform.Load(style); // compiled stylesheet
        System.IO.StringWriter writer = new System.IO.StringWriter();
        XmlReader xmlReadB = new XmlTextReader(new StringReader(document.DocumentElement.OuterXml));
        transform.Transform(xmlReadB, null, writer);
        return writer.ToString();
    }
    catch (Exception ex)
    {
        throw ex;
    }

}   
于 2019-11-19T09:34:10.263 に答える