如何从XmlWriter输出中删除初始空行?

时间:2015-06-29 19:56:47

标签: c# xml asp.net-mvc-4

请参见下图: enter image description here

英文:

  

XML解析错误:XML或文本声明不在实体的开头。   位置:https:// ****。com / sitemap第4行,第1列:

我无法正确创建站点地图,因为我总是坚持这个错误。我不知道为什么,但似乎XmlWriterxml标记之前添加了3个空白行。我试过玩XmlWriterSettings和许多不同的东西都无济于事。

这是我的代码的一部分:

public override void ExecuteResult(ControllerContext context)
{
    context.HttpContext.Response.ContentType = "text/xml;";
    context.HttpContext.Response.ContentEncoding = Encoding.UTF8;

    using (XmlWriter writer = new XmlTextWriter(context.HttpContext.Response.Output))
    {
        writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
...
        writer.WriteEndElement();

        writer.Flush();
        writer.Close();
    }
}

有没有人知道如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

UTF-8字节顺序标记(BOM)计为换行符。使用EF BB BF删除BOM以删除3个字节new UTF8Encoding(false)

using (XmlWriter writer = XmlWriter.Create(memoryStream, 
new XmlWriterSettings { Indent = true, Encoding = new UTF8Encoding(false)}))

或者,XmlTextWriter对我也很好:

using (XmlWriter writer = new XmlTextWriter(memoryStream, new UTF8Encoding(false)))