使用xsl文件下载xml

时间:2013-07-29 13:39:00

标签: asp.net xml xslt

我想下载xml文件和xsl(样式表)。 我下载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',因为它正由另一个进程使用。

2 个答案:

答案 0 :(得分:0)

是否要将xml写入响应,或者将xsl应用于xml?如果是后者,请查看以下链接:

Applying XSLT to XML in C#

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

答案 1 :(得分: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文件,该文件是人类可读的格式。