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

ファイルを2回保存しています。1回は。でXmlTextWriter、もう1回は。で保存していますxmlDoc.Save。から保存するとBOMが追加されXmlTextWriter ませんxmlDoc.Save-で保存します。

代わりに保存するだけ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 に答える