Я работаю с большим XML-файлом, который занимается локализацией строк в C#. Я не писал программу, которая создает XML, но у меня есть доступ к исходному коду, и я хочу ее изменить, так как он в настоящее время выводит 1.0 в качестве версии, но содержит недопустимые символы в документе.C# XMLTextWriter - XML 1.1
Вот как код в настоящее время выписан.
XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8);
xr.Formatting = Formatting.Indented;
xr.Indentation = 4;
xr.WriteStartDocument();
xr.WriteStartElement("tlkFile");
// ...
Однако WriteStartDocument()
documentation states использует XML-версию 1.0. Я знаю, что это не работает, потому что я пишу парсер Java, который модифицирует этот XML, и он не может загружаться, потому что он имеет символы Unicode, которые не разрешены. В частности, 
, который, как представляется, отменяется. Я не уверен, почему это здесь ... файл длиной около 500000 строк.
Я вручную изменил заголовок, прежде чем мой Java-анализатор схватил его до 1.1, и он сработал. Технически я мог бы изменить XML как строку, а затем проанализировать это, но вместо этого я предпочел бы иметь правильный XML.
Я не могу найти способ изменить это. Я не могу изменить инструмент, чтобы использовать какую-либо другую форму написания XML, потому что это общий проект с открытым исходным кодом, который используется, и я не так хорош в C#.
Есть ли уловка для этого?
Как вы указываете контент для записи? Например,' WriteString'? ['WriteString'] (http://msdn.microsoft.com/en-us/library/system. xml.xmlwriter.writestring (v = vs.110) .aspx) имеет несколько замечаний о недопустимых символах. –
XmlTextWriter внутренне использует ['XmlCharType'] (http://referencesource.microsoft.com/#System.Xml/System /Xml/XmlCharType.cs) при записи текстовых данных в документ. Этот тип ограничен символами, которые действительны в XML 1.0. Я очень сомневаюсь, что вы даже можете записать '\ x18' в свой XML-документ обычными способами. – Tomalak
Контент, который записывается, является декомпилированным файлом локализации (Talkfile, TLK), который используется в нереальных машинных играх. Я могу заставить мой java проанализировать и написать его, если я изменил заголовок, чтобы использовать 1.1 вручную. Я просмотрел документацию больше, d Я не думаю, что .NET даже поддерживает 1.l, что отстой. – Mgamerz