本文记录了ASP.NET MVC项目中,使用XmlWriter类输出XML流,导致Response响应网站出现空白页,并且在调试中出现XML5632:仅允许有一个根元素的错误。
造成此原因是由于在使用XmlWriter的时候,没有使用Close()方法关闭流,导致所输出的XML为无限的文档。流输出没有关闭而使XML格式不完整。
MSDN上有相关说明:
1、在调用 Close 之后执行要编写其他输出的调用,或者此调用的结果是无效的XML文档。
2、使用 XmlWriter 方法输出 XML 时,在调用 Close 方法前,不会写入元素和属性。 例如,如果使用 XmlWriter 写入 XmlDocument,则在关闭 XmlWriter 之前,您将无法在目标文档中看到写入的元素和特性。
具体的代码如下:
Response.ContentType = "application/xml";
XmlWriter responseWriter = XmlWriter.Create(Response.OutputStream, null);
responseWriter.WriteStartElement("book");
responseWriter.WriteElementString("name", "西游记");
responseWriter.WriteEndElement();
//一定要关闭流
responseWriter.Close();
最后如果没有调用Close方法关闭流的话,就会出现仅允许有一个根元素的错误,这是因为输出的XML文档格式不完整,导致变成无效的文档。
作者:十有三
出处:https://shiyousan.com/post/635638351541082723
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。