Asp.net 如何制作由XmlDocument()创建的可下载文件
我已经创建了一个带有Asp.net 如何制作由XmlDocument()创建的可下载文件,asp.net,xml,Asp.net,Xml,我已经创建了一个带有 XmlDocument xmldoc = new XmlDocument(); 我可以将此文件设置为可下载文件吗?在不保存它的情况下?您会想看看如何编写一个自定义HTTP处理程序(一个实现IHttpHandler的类),然后简单地在web.config中注册它。有关如何设置的示例,请参见 下面是一个基本示例,说明如何实现一个返回XmlDocument的标记 using System.Web; public class MyXmlDocumentHandler : IHt
XmlDocument xmldoc = new XmlDocument();
我可以将此文件设置为可下载文件吗?在不保存它的情况下?您会想看看如何编写一个自定义HTTP处理程序(一个实现
IHttpHandler
的类),然后简单地在web.config中注册它。有关如何设置的示例,请参见
下面是一个基本示例,说明如何实现一个返回XmlDocument
的标记
using System.Web;
public class MyXmlDocumentHandler : IHttpHandler
{
public static XmlDocument XmlDoc
{
get;
set;
}
public MyXmlDocumentHandler()
{
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml"; // Set the MIME type.
XmlDoc.WriteTo(context.Response.OutputStream); // Write the XML markup to the respone stream.
}
public bool IsReusable
{
// To enable pooling, return true here.
// This keeps the handler in memory.
get { return false; }
}
}
这就是为什么:
xmldoc.Save(Response.OutputStream)
不要忘记设置响应mime类型和其他相关属性,以便客户端浏览器将其理解为文件下载。您可以执行以下操作:
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<xml>myxml</xml>");
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=MyXmlDocument.xml");
Response.AddHeader("Content-Length", doc.OuterXml.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Write(doc.OuterXml);
XmlDocument doc=新的XmlDocument();
doc.LoadXml(@“myxml”);
Response.Clear();
AddHeader(“内容处置”,“附件;文件名=MyXmlDocument.xml”);
AddHeader(“Content-Length”,doc.OuterXml.Length.ToString());
Response.ContentType=“应用程序/八位字节流”;
Response.Write(doc.OuterXml);
与Noldorin发布的内容不同,您不必创建自定义HTTP处理程序
如果要下载XmlDocument类创建的XML文档,可以将其直接保存到流中,将其内容类型设置为text/XML
大致类似于以下代码:
XmlDocument xmldoc = new XmlDocument();
/*
* ... more code ...
*/
this.Response.ContentType = "text/xml";
xmldoc.Save(this.Response.OutputStream);
您需要响应请求,并将文档保存到响应中。当然,您需要能够以某种方式获取
XmlDocument
——如果您在一个请求中创建了它(例如,对于一个页面),那么您需要能够基于参数重新创建它,或者在会话中缓存它(所有正常的警告)
例如,在正常的页面中
可以执行以下操作:
xmldoc.Save(Response.OutputStream);
或
您可以轻松地创建.ashx文件和相关的代码隐藏(新的“通用处理程序”项),然后在代码隐藏中使用以下各项实现IHttpHandler
implementProcessRequest
:
public void ProcessRequest(HttpContext context)
{
XmlDocument doc = ...;
doc.Save(context.Response.OutputStream);
}
您可能还需要设置适当的内容类型(可能是“text/xml”,除非它是一种特定的xml格式,您希望对其进行不同的解释),等等。如果您希望客户端默认保存它,您应该设置内容配置。您不必注册自定义处理程序,但我发现创建.ashx文件最简单(+代码隐藏)编写适当的XML。我更喜欢这样做,而不是使用普通页面,人们可能希望创建HTML。
public void ProcessRequest(HttpContext context)
{
XmlDocument doc = ...;
doc.Save(context.Response.OutputStream);
}