2009-05-21 54 views

回答

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

这是最简单的一个。 – Vikas 2009-05-22 04:45:18

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; } 
    } 
} 
1

这是怎么了:

xmldoc.Save(Response.OutputStream) 

不要忘记设置响应MIME类型和其他相关属性,这样客户端浏览器将它理解为一个文件的下载。

0

不同于什么Noldorin贴你没有创建一个自定义HTTP处理程序。

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

或多或少类似下面的代码:

XmlDocument xmldoc = new XmlDocument(); 

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

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

xmldoc.Save(this.Response.OutputStream); 
+0

您不必注册自定义处理程序,但是我发现创建一个.ashx文件(+代码隐藏)可以轻松地编写适当的XML。我更喜欢使用一个可能期望创建HTML的普通页面。 – 2009-05-21 11:34:57

0

你需要回应它的请求,将文档保存到响应。当然,你需要能够得到XmlDocument以某种方式 - 如果你已经在一个请求中创建它(例如对于一个页面),你需要能够根据缓存的参数重新创建它它在会议(与所有正常的注意事项)。

对于你可能会做写出来,内正常Page的例子:

xmldoc.Save(Response.OutputStream); 

xmldoc.Save(Response.Output); 

您可以轻松创建一个ashx的文件和相关的代码隐藏(新“通用处理程序”项目),然后在实现IHttpHandler实施ProcessRequest的代码后面:

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

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

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