0

XMLドキュメントがあります。これをc#にxs​​ltを追加して、画面に出力しようとしています。私はこれについていくつかの調査を行ってきましたが、これを行うにはXslCompiledTransformクラスを使用する必要があるようです。

問題は、Loadメソッドを呼び出すと、ページエラーが発生することです。私がオンラインで見つけたすべてのサンプルは、このファイルと同じフォルダーにある「Sort.xsl」のようにロードを呼び出すことを示唆しているようです。また、変換されたxmlを画面に表示するためにMemoryStream()を使用する必要があると想定していますか?

XmlDocumentを使用してすべての処理を実行し、すべてのデータは「xmlDocument」にあります。誰かが外部xslをロードし、それを適用して結果を画面に表示するのを手伝ってもらえますか?

どうもありがとう

// Create a writer for writing the transformed file.
MemoryStream strm = new MemoryStream();

XmlWriter writer = XmlWriter.Create(strm);

// Create and load the transform with script execution enabled. 
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load(@"Convert.xsl", settings, null);

// Execute the transformation. 
transform.Transform(xmlDocument, Response.OutputStream);
4

1 に答える 1

1

Webアプリケーションを作成していると仮定します。「画面に出力」とは、変換されたXMLをブラウザーに送信することを意味します。

現在のディレクトリはIISユーザーのディレクトリです。つまり、間違ったディレクトリです。

アプリケーションの実際の(物理的な)パスを使用してXSLファイルのパスを作成する必要があります-`HttpRequest.PhysicalApplicationPath'を使用してアクセスできます-次のようになります。

transform.Load(Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath,"Convert.xsl"), settings, null); 

これは、リクエストの処理中にコードが呼び出された場合にのみ機能することに注意してください。それ以外の場合HttpContext.Currentnull、でありConvert.xsl、メインアプリケーションディレクトリ(.ASPXファイルなど)にあると想定します。

于 2012-08-29T15:27:49.863 に答える