2011-02-01 84 views
0

我在sqlserver中有一个表,在那个表中我有一个有xml文件的列。我在gridview中显示该表。当我们点击按钮时,我想以xml格式显示特定的xml文件列或导出为xml文件格式。在ASP.NET页面上格式化显示的XML

+0

也许你想编写一个HttpHandler来生成xml文件并将其返回给用户,以便他可以下载? – Luke 2011-02-01 17:45:30

回答

0

就可以实现像

dtbl.WriteXml(Server.MapPath("~/yourSample.xml")); 

,也可以是

String xml = dtbl.Rows[0]["XMLColumnName"].ToString(); 
string filename = System.Web.HttpContext.Current.Server.MapPath("~/yourSample.xml"); 
XmlDocument xmlDoc = new XmlDocument(); 
XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8); 
xmlWriter.Formatting = Formatting.Indented; 
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); 
xmlWriter.WriteRaw(xml); 
xmlWriter.Flush(); 
xmlWriter.Close(); 
+0

谢谢你,它工作正常 – 2011-02-01 20:18:29

0

保留原始XML“缓存”(或重新检索它,如果这对您的应用程序更好)。然后,您只需向新窗口输出一个可以检索XML(从缓存或数据库)并以XML形式显示给用户的URL。您需要将响应类型更改为XML以实现此目的。如果这没有意义,您需要了解一些有关响应标头和可能的MIME类型。

0

一个HttpHandler将努力生成xml文件,并返回给用户,因为会写XML与响应正确的内容类型标题例如:

  HttpContext.Current.Response.ClearHeaders(); 
      HttpContext.Current.Response.AppendHeader("Content-Length", dataLength.ToString()); 
     HttpContext.Current.Response.AppendHeader("Content-Transfer-Encoding", "binary"); 
     HttpContext.Current.Response.AppendHeader("Accept-Ranges", "bytes"); 
     if (dataLength > -1) 
      HttpContext.Current.Response.AppendHeader("Accept-Header", dataLength.ToString()); 
     HttpContext.Current.Response.AppendHeader("Content-Disposition", string.Format("Attachment;Filename=\"{0}\"", fileName)); 
     HttpContext.Current.Response.ContentType = contentType; 

     HttpContext.Current.Response.ClearContent(); 

然后将XML内容写入响应大块。