Краткий ответ - закодировать URL так же, как любой другой текст в документе. Вы не ошибетесь, если замените символы следующим образом:
& -> &
' -> '
" -> "
< -> <
> -> >
(и любой, кто читает документ с помощью соответствующего анализатора, получит правильный, т. Е. Не закодированный, текст обратно).
Тем не менее, я бы повторил комментарий Энтони: почему вы думаете, что вам нужно беспокоиться об этом? Любая разумная система записи XML должна брать текст, который вы хотите представить, и выполнять кодирование самостоятельно (точно так же, как парсер отменит кодировку). Ваше приложение должно иметь дело только с не закодированным текстом, и оно должно полагаться на библиотеку записи XML, чтобы иметь дело с кодировкой символов и сохранением правильной формы. В противном случае вы рискуете назвать бозо . Похоже, XmlTextWriter - это .net API, который вносит все необходимые изменения.