请参见下图:
英文:
XML解析错误:XML或文本声明不在实体的开头。 位置:https:// ****。com / sitemap第4行,第1列:
我无法正确创建站点地图,因为我总是坚持这个错误。我不知道为什么,但似乎XmlWriter
在xml
标记之前添加了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();
}
}
有没有人知道如何解决这个问题?谢谢!
答案 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)))