-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);

我在谷歌搜索过,但找不到解决方案。给出一些关于这个的想法但是它给出的例外是进程无法访问文件'~mypath\Result.html',因为它正在被另一个进程使用。

4

2 回答 2

0

您想将 xml 写入响应,还是将带有 xsl 的 xml 写入响应?如果是后者,请查看此链接:

在 C# 中将 XSLT 应用于 XML

如果您只想返回原始 XML,那么您的代码似乎已经在这样做了。但是,您的问题的标题有点误导,因为您表示要下载 2 个请求的 2 个文件,这可以通过 MIME 完成,但我看不到它的用途。如果客户端请求 XML 和 XSL 文件,为什么不将它们一起应用呢?

于 2013-07-29T15:16:33.643 回答
0

我添加了一个 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 回答