2012-12-05 65 views
0

我只是想能夠按下一個按鈕,並獲得一個xmldocument文件下載。下載一個XmlDocument

我試過的東西配發,例如:

XmlDocument doc As XmlDocument() = //Method that gets a xmldocument 
Response.Clear() 
this.Response.ContentType = "text/xml" 
xmldoc.Save(this.Response.OutputStream) 

Dim xmldocument As XmlDocument = //Method that gets a xmldocument 
Using stream As MemoryStream = New MemoryStream() 
      Dim xmlWriter As XmlTextWriter = New XmlTextWriter(stream, System.Text.Encoding.ASCII) 
      xmldocument.WriteTo(xmlWriter) 
      xmlWriter.Flush() 

      Dim byteArray As Byte() = stream.ToArray() 
      Response.Clear() 
      Response.AppendHeader("Content-Disposition", "filename=MyExportedFile.xml") 
      Response.AppendHeader("Content-Length", byteArray.Length.ToString()) 
      Response.ContentType = "application/octet-stream" 
      Response.BinaryWrite(byteArray) 
      xmlWriter.Close() 
     End Using 

實在不行,我忘記了一些東西明顯?因爲沒有任何工作,xmldocument加載一切似乎很好,但文件永遠不會下載和「響應」絕對沒有!

在Csharp的或VB.NET的回答將是有益的

+0

的代碼示例是非常混亂,看起來他們看起來不像是可編輯的。如果你發佈了實際的代碼,這將有所幫助。 –

+0

在您發佈的代碼中,您不會將任何內容加載到Response中。 – Paparazzi

+0

它與xml沒有任何關係。只要打開它作爲txt文件,寫入響應。 – urlreader

回答

1

嘗試是這樣的

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(@" 
<root name='rootAttribute'> 
    <OrderRequest name='one' /> 
    <OrderRequest name='two' /> 
    <OrderRequest name='three' /> 
</root> 
"); // Load some random xml - use function to load whatever you need 

MemoryStream ms = new MemoryStream(); 
using (XmlWriter writer = XmlWriter.Create(ms)) 
{ 
    doc.WriteTo(writer); // Write to memorystream 
} 

byte[] data = ms.ToArray(); 
HttpContext.Current.Response.Clear(); 
HttpContext.Current.Response.ContentType = "text/xml"; 
HttpContext.Current.Response.AddHeader("Content-Disposition:", 
        "attachment;filename=" + HttpUtility.UrlEncode("samplefile.xml")); // Replace with name here 
HttpContext.Current.Response.BinaryWrite(data); 
HttpContext.Current.Response.End(); 
ms.Flush(); // Probably not needed 
ms.Close(); 
+0

它仍然沒有下載.. 去檢查一個有這個應用程序更多的經驗的同事可能有我失蹤的東西。 –

+0

上面的代碼肯定在我配置的示例站點中工作。確保在此功能之前沒有其他輸出。 – Kami

+0

找出問題,您的示例確實起作用我沒有在page_load上執行下載功能,並且我想用一個不起作用的按鈕執行此操作,因此我使用iframe調用另一個不會彈出的頁面或以任何方式變得可見,並將代碼放入該頁面的page_load中。 –

0

你試過......

Response.ContentType = "text/xml" 
Response.Write(MethodThatReturnsXMLDoc().innerXml) 
+0

我現在有,它沒有做任何事情.. –