如何在XML文件中下载XML内容

6

可能是重复问题:
如何使用C#在asp.net中下载xml文件

有人能帮忙解决如何下载字符串格式的xml文件吗?我正在使用MVC3。

我的代码:

 public FileResult Download(string id)
    {  
        var model = service.GetAllDefinitions().First(x => x.ID == id);
        var definitionDetails = new StatisticDefinitionModel(model);
        string xmlString = definitionDetails.ToXml;
     //string presented xml  

        string fileName = definitionDetails.Name + ".xml";

            var stream = new MemoryStream();

            var writer = XmlWriter.Create(stream);
            writer.WriteRaw(xmlString);
            stream.Position = 0;
            var fileStreamResult = File(stream, "application/xml", fileName);
            return fileStreamResult; 

    }

但是这个不起作用,会出现错误。

错误信息:

XML文档必须有一个顶层元素。 错误处理资源。

谢谢。


创建表的xml文件已经正常工作,已经上传到数据库表中。 - Ash
当我从xmlString复制内容时,它可以正常工作。但是当我尝试下载时,出现了错误。 - Ash
1个回答

10

你不需要一个XML流在这里,只需返回字节。

public FileResult Download(string id)
{  
    var model = service.GetAllDefinitions().First(x => x.ID == id);
    var definitionDetails = new StatisticDefinitionModel(model);
    string xmlString = definitionDetails.ToXml;
    string fileName = definitionDetails.Name + ".xml";


    return File(Encoding.UTF8.GetBytes(xmlString), "application/xml", fileName);
}

我也尝试了这种方式。但是出现了错误,如下所示:XML页面无法显示,无法使用XSL样式表查看XML输入。请纠正错误,然后单击“刷新”按钮,或稍后再试。--------------------------------------------------------------------------------名称以无效字符开头。处理资源时出错'file:///C:/Users/asubramaniam/AppData/Local/Micros... < - Ash
我认为问题可能出在根元素的某个命名空间声明上。"无法使用XSL样式表查看XML输入"这个消息表示用于您的xml的某些XSL不可用或存在错误。但也许默认浏览器xsl对xml造成了问题。很难说。请在此处粘贴xml根声明。 - Marcelo De Zen
好的。1)您必须为xmlns和xsi:schemaLocation设置绝对URI。在您的情况下,您必须在"g.gpp..."之前加上"http://"前缀。2)在xmlns属性后面有一个分号,不应该出现这个分号。3)在纠正这些问题之后,XML在我的浏览器上运行良好。尝试一下,看看会发生什么。如果它不起作用,您需要检查浏览器接收到的响应(例如查找编码头),或者尝试将编码更改为utf-8。对于文件和流,utf-8几乎是标准,只有在有充分理由时才使用其他编码。 - Marcelo De Zen
<?xml version="1.0" encoding="utf-16" ?>
  • <Statistic Name="CompAPS" Type="table" xmlns="http://g.gpp.com/AnalyticPageModel/2.0" xsi:schemaLocation="http://g.gpp.com/AnalyticPageModel/2.0 AnalyticPageModel.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- Ash
我的 XML 看起来就像你说的。错误在这里,因为它看起来像一个链接。将尝试更改编码。 - Ash
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接