13

如何从正在创建的 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);
4

2 回答 2

31

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

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

using (TextWriter writer = new StreamWriter(filename, false,
                                            new UTF8Encoding(false))
{
    xmlDoc.Save(writer);
}
于 2009-11-18T13:34:32.020 回答
0

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

于 2009-11-18T13:34:20.697 回答