如何使用C#从XmlTextWriter中删除BOM?

如何从正在创建的XML文件中删除BOM?

我尝试过使用新的UTF8Encoding(false)方法,但它不起作用。 这是我的代码:

XmlDocument xmlDoc = new XmlDocument(); XmlTextWriter xmlWriter = new XmlTextWriter(filename, new UTF8Encoding(false)); xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); xmlWriter.WriteStartElement("items"); xmlWriter.Close(); xmlDoc.Load(filename); XmlNode root = xmlDoc.DocumentElement; XmlElement item = xmlDoc.CreateElement("item"); root.AppendChild(item); XmlElement itemCategory = xmlDoc.CreateElement("category"); XmlText itemCategoryText = xmlDoc.CreateTextNode("test"); item.AppendChild(itemCategory); itemCategory.AppendChild(itemCategoryText); xmlDoc.Save(filename); 

您将文件保存两次 – 一次使用XmlTextWriter ,一次使用xmlDoc.Save 。 从XmlTextWriter保存添加BOM – 使用xmlDoc.Save保存。

只需保存到TextWriter ,以便您可以再次指定编码:

 using (TextWriter writer = new StreamWriter(filename, false, new UTF8Encoding(false)) { xmlDoc.Save(writer); } 

我将XML写入字符串(构建器),然后将该字符串写入文件。