Как я могу сгенерировать XML с CR, а не CRLF в XmlTextWriter - PullRequest
3 голосов
/ 05 августа 2010

Я генерирую XML через XmlTextWriter.

Файл выглядит хорошо на мой взгляд, проверяет ( на wc3 ) и был принят клиентом.

Но поставщик клиента жалуется, что концы строк - это CRLF, а не просто CR.

Ну, я на машине с Win32 использую C #, а CRLF - это стандартное окончание строк Win32.Есть ли способ изменить окончания строк в XmlTextWriter?

Кроме того, не должны ли окончания строк не иметь значения для правильного синтаксического анализатора XML?

см. Также: Что такое возврат каретки, перевод строки и перевод формы?

ПРИМЕЧАНИЕ. Похоже, что единственным ответом является боковое решение - вместо XmlTextWriter

необходимо использовать XmlWriter

Ответы [ 4 ]

6 голосов
/ 05 августа 2010

конечно, через несколько секунд после запроса я нахожу подсказку по MSDN (которую я не смог найти через Google), которая ссылается на XmlWriterSettings.NewLineChars

, которая затем привела меня кнеприемлемый ответ на SO: Запись XMLDocument в файл с определенным символом новой строки (c #)

Это все в терминологии .....

5 голосов
/ 05 августа 2010

Используйте XmlWriterSettings, чтобы установить то, что вы хотите в качестве символа конца строки.

XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.NewLineChars = "\r";

XmlWriter writer = XmlWriter.Create(
                         new StreamWriter(@"c:\temp\hello.xml", mySettings);

Я не знаю, где будут иметь значение символы конца строки.Я не сталкивался с этим раньше.

1 голос
/ 05 августа 2010

Какое окончание строки используется, не должно иметь значения для правильно реализованного синтаксического анализатора (см. спецификацию ), я цитирую (выделение мое):

Чтобы упростить задачи приложений, процессор XML должен вести себя так, как будто он нормализованы все разрывы строк во внешних проанализированные объекты (включая объект документа) на входе, до разбор, переводя оба двухсимвольная последовательность #xD #xA и любой #xD за которым не следует #xA до одного символа #xA.

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

0 голосов
/ 05 августа 2010

Используйте свойство XmlWriterSettings.NewLineChars.

...