Comment puis-je supprimer le BOM de XmlTextWriter en utilisant C#?
Comment supprimer le BOM d'un fichier XML qui est créé?
j'ai essayé D'utiliser la nouvelle méthode UTF8Encoding(false), mais elle ne fonctionne pas. Voici le code que j'ai:
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);
12
demandé sur
Peter Mortensen
2009-11-18 16:27:48
2 réponses
vous sauvegardez le fichier deux fois - une fois avec XmlTextWriter
et une fois avec xmlDoc.Save
. Sauver du XmlTextWriter
n'est pas ajouter un bom - sauver avec xmlDoc.Save
est.
il suffit de sauvegarder sur un TextWriter
à la place, pour que vous puissiez spécifier à nouveau l'encodage:
using (TextWriter writer = new StreamWriter(filename, false,
new UTF8Encoding(false))
{
xmlDoc.Save(writer);
}
29
répondu
Jon Skeet
2013-11-11 09:21:52
j'écrirais le XML à une chaîne de caractères(builder) à la place et j'écrirais cette chaîne de caractères au fichier.
0
répondu
Dan Byström
2009-11-18 13:34:20