我想下载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',因为它正由另一个进程使用。
答案 0 :(得分:0)
是否要将xml写入响应,或者将xsl应用于xml?如果是后者,请查看以下链接:
如果您只想返回原始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文件,该文件是人类可读的格式。