如何使用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写入字符串(构建器),然后将该字符串写入文件。