C# XMLTextWriter - XML ​​1.1

Я работаю с большим XML-файлом, который занимается локализацией строк в C#. Я не писал программу, которая производит XML, но у меня есть доступ к источнику, и я хочу изменить его, так как в настоящее время он выводит 1.0 в качестве версии, но он содержит недопустимые символы в документе.

Вот как код в настоящее время написан.

XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8);
xr.Formatting = Formatting.Indented; 
xr.Indentation = 4;
xr.WriteStartDocument();
xr.WriteStartElement("tlkFile");
// ...

Тем не менее WriteStartDocument() В документации говорится, что он использует XML версии 1.0. Я знаю, что это не работает, потому что я пишу анализатор Java, который изменяет этот XML, и он не может загрузить, потому что у него есть символы Unicode, которые не разрешены. конкретно  который, кажется, будет отменен. Я не уверен, почему это здесь... файл имеет длину около 500000 строк.

Я вручную изменил заголовок, прежде чем мой анализатор java перехватил его до 1.1, и он заработал. Технически я мог бы изменить XML как строку, а затем проанализировать ее, но вместо этого я предпочел бы иметь правильный XML.

Я не могу найти способ изменить это. Я не могу изменить инструмент для использования какой-либо другой формы написания XML, потому что это общий проект с открытым исходным кодом, который используется, и я не очень хорош в C#.

Есть ли уловка с этим?

2 ответа

Используйте следующий процесс:

  • Создайте пользовательскую реализацию интерфейса IXmlSerializable
  • Справиться  используя пользовательский метод
  • Используйте экземпляр реализации, чтобы прочитать документ

Рекомендации

Можете ли вы заменить WriteStartDocument() на WriteRaw("") И удалить WriteEndDocument()?

Другие вопросы по тегам