Я понял часть спецификации, которую вы процитировали, что все напечатанные (буквальные) CR
символы заменяются и перед синтаксическим анализом заменяются. Таким образом, любой CR
, представленный в виде ссылки на символ 
, не будет заменен на LF
, поскольку замена должна быть сделана перед синтаксическим анализом (или она должна работать так, как если бы она выполнялась до синтаксического анализа). и ссылки на символы преобразуются в символьные данные во время синтаксического анализа XML . Обратите внимание, что CR
s в секциях CDATA
заменяются, но опять же, ссылки на символы в секциях CDATA
не будут анализироваться с фактическими символами, на которые они ссылаются.
Таким образом, вы сможете сохранить ваши переводы строк такими, какими они были, если вы сериализовали их как ссылки на символы. Однако, будьте осторожны: я не буду рассчитывать на то, что все инструменты XML подчиняются этому соглашению. Также вы можете потерять CR
s, если проанализированный XML отправляется другому инструменту, который снова интерпретирует содержимое.
Кроме того, индексирование данных по позициям персонажей звучит для меня довольно хрупко. Пожалуйста, подумайте, можете ли вы найти другой способ токенизации или сегментации ваших данных. Если вам нужно придерживаться индексации на основе позиции символов, я бы предложил как-то нормализовать текстовые данные. В конце концов, перевод строки не единственная возможная точка отказа. Другие включают, например, акцентированные символы и лигатуры.