XmlTextWriter неправильно записывает управляющие символы

.NET's XmlTextWriter создает некорректные xml файлы.

В XML некоторые управляющие символы разрешены, например 'горизонтальная табуляция' ( ), а другие нет, например 'вертикальная табуляция' (). (См. spec.)

У меня есть строка, содержащая управляющий символ UTF-8, который не разрешен в XML.
Хотя XmlTextWriter экранирует символ, полученный XML, конечно, все равно недействителен.

Как сделать так, чтобы XmlTextWriter никогда не выдавал недопустимый XML-файл?

Или, если это невозможно сделать с помощью XmlTextWriter, как я могу удалить из строки определенные управляющие символы, недопустимые в XML?

Пример кода:

using (XmlTextWriter writer =
  new XmlTextWriter("test.xml", Encoding.UTF8))
{
  writer.WriteStartDocument();
  writer.WriteStartElement("Test");
  writer.WriteValue("hello \xb world");
  writer.WriteEndElement();
  writer.WriteEndDocument();
}

Выход:

hello  world

13
задан Tom Lokhorst 24 November 2011 в 12:02
поделиться