どのように私はC#を使用してXmlTextWriterからBOMを削除することができますか?

StackOverflow https://stackoverflow.com/questions/1755958

質問

が作成されている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を記述して、ファイルにその文字列を記述します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top