2009-05-21 85 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格式)等。如果您希望客戶端默認保存它,則您應該設置一個內容配置。