如何创建由XmlDocument()创建的可下载文件

时间:2009-05-21 11:21:45

标签: asp.net xml

我用

创建了一个文件
XmlDocument xmldoc = new XmlDocument();

我可以将此文件设为可下载吗?没有保存它?

5 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

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

答案 1 :(得分:1)

这是:

xmldoc.Save(Response.OutputStream)

不要忘记设置响应mime类型和其他相关属性,以便客户端浏览器将其理解为文件下载。

答案 2 :(得分:0)

您需要查看编写自定义HTTP处理程序(实现IHttpHandler的类)并在web.config中注册它。有关如何设置一个的好例子,请参阅this article on MSDN

以下是一个基本示例,说明如何实现一个返回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; }
    }
}

答案 3 :(得分:0)

与Noldorin发布的内容不同,您不必创建自定义HTTP处理程序。

如果要下载XmlDocument类创建的XML文档,可以始终将其直接保存到流中,并将其内容类型设置为text/xml

或多或少像以下代码:

XmlDocument xmldoc = new XmlDocument();

/*
 * ... more code ...
 */

this.Response.ContentType = "text/xml";

xmldoc.Save(this.Response.OutputStream);

答案 4 :(得分:0)

您需要回复对它的请求,将文档保存到响应中。当然,您需要以某种方式获取 XmlDocument - 如果您在一个请求中创建了它(例如页面),您将需要能够基于参数重新创建它,在会话中缓存它(具有所有正常的警告)。

有关将其写出的示例,请在正常Page范围内执行:

xmldoc.Save(Response.OutputStream);

xmldoc.Save(Response.Output);

您可以轻松地创建.ashx文件和相关的代码隐藏(新的“Generic Handler”项),然后在代码隐藏中实现IHttpHandler实现ProcessRequest

public void ProcessRequest(HttpContext context)
{
    XmlDocument doc = ...;

    doc.Save(context.Response.OutputStream);
}

您可能还想设置适当的内容类型(可能是“text / xml”,除非它是您希望以不同方式解释的特定XML格式)等。如果您希望客户端默认保存它,那么您应设置内容处理。