如何从XmlTextWriter的使用C#删除BOM?
-
20-09-2019 - |
题
如何从正在创建的XML文件中删除BOM?
我已经使用新的UTF8Encoding(假)方法试过,但它不工作。这里是我的代码:
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为字符串(助洗剂),而不是,然后写该字符串到文件。
不隶属于 StackOverflow