Как я могу удалить спецификацию из XmlTextWriter с помощью C #? - PullRequest
12 голосов
/ 18 ноября 2009

Как удалить спецификацию из создаваемого XML-файла?

Я пытался использовать новый метод 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);

Ответы [ 2 ]

30 голосов
/ 18 ноября 2009

Вы сохраняете файл дважды - один раз с XmlTextWriter и один раз с xmlDoc.Save. Сохранение с XmlTextWriter не при добавлении спецификации - сохранение с xmlDoc.Save.

Просто сохраните вместо TextWriter, чтобы вы могли снова указать кодировку:

using (TextWriter writer = new StreamWriter(filename, false,
                                            new UTF8Encoding(false))
{
    xmlDoc.Save(writer);
}
0 голосов
/ 18 ноября 2009

Вместо этого я записываю XML в строку (конструктор), а затем записываю эту строку в файл.

...