-2

xsl(スタイルシート)と一緒にxmlファイルをダウンロードしたいです。xml ファイルをダウンロードするための私のコードは次のとおりです。

 XPathDocument myXPathDoc = new XPathDocument("myxml.xml");

                XslCompiledTransform myXslTrans = new XslCompiledTransform();
                myXslTrans.Load("myxsl.xsl");

                XmlTextWriter myWriter = new XmlTextWriter("Result.html", null);
                myXslTrans.Transform(myXPathDoc, null, myWriter);

                string strFullPath = Server.MapPath("Result.html");

                string strContents = null;
                System.IO.StreamReader objReader = default(System.IO.StreamReader);
                objReader = new System.IO.StreamReader(strFullPath);
                strContents = objReader.ReadToEnd();
                objReader.Close();

                //attach that XML file and download on local machine
                string attachment = "attachment; filename=" + myWriter;
                Response.ClearContent();
                Response.ContentType = "text/html";
                Response.AddHeader("content-disposition", attachment);
                Response.Write(strContents);

Googleで検索しましたが、解決策が見つかりません。これに関する考えを教えてくださいしかし、別のプロセスによって使用されているため、プロセスはファイル '~mypath\Result.html' にアクセスできません。

4

2 に答える 2

0

xml を応答に書き込みますか、それとも xsl が適用された xml を書き込みますか? 後者の場合は、次のリンクを確認してください。

C# で XSLT を XML に適用する

生の XML を返すだけの場合、コードは既にそれを行っているようです。ただし、質問のタイトルは少し誤解を招く可能性があります。2 つのリクエストで 2 つのファイルをダウンロードすることを示しているためです。クライアントが XML ファイルと XSL ファイルを要求している場合、それらを一緒に適用してみませんか?

于 2013-07-29T15:16:33.643 に答える
0

私は1つのhtmlファイルを追加し、以下のようにしました

 string strFullPathXml = Server.MapPath("myxml.xml");
                    string strFullPathXsl = Server.MapPath("myxsl.xsl");
                    string strFullPathHtml = Server.MapPath("Result.html");

                    XPathDocument xPathDoc = new XPathDocument(strFullPathXml);
                    XslCompiledTransform xslTrans = new XslCompiledTransform();
                    xslTrans.Load(strFullPathXsl);

                    XmlTextWriter xWriter = new XmlTextWriter(strFullPathHtml, null);
                    xslTrans.Transform(xPathDoc, null, xWriter);
                    xWriter.Close();

                    Response.ContentType = "text/html";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=Result.html");
                    Response.ClearContent();
                    Response.WriteFile(strFullPathHtml);
                    Response.Flush();
Response.End();

その後、人間が読める形式のhtmlファイルをダウンロードします。

于 2013-07-30T11:18:06.987 に答える