MSXML и нормализация новой строки (?) Свойства Document.xml - PullRequest
3 голосов
/ 20 ноября 2008

Я создал следующий простой xml (используется escape-последовательность C) "<A>\n</A>" Когда MSXML (v4 и v6) сериализует документ DOM с использованием IXMLDOMDocument2.xml, он переводит новую строку в формат dos и возвращает: "<A>\r\n</A>".

Когда я использую DOM для извлечения только строкового узла внутри <A> элемента, я получаю правильный одиночный символ ("\n") string.

Конечно, у меня preserveWhiteSpace установлено VARIANT_TRUE

XML.Net и анализаторы Xerces работают нормально и не изменяют сохраненную строку при сериализации XML-документа.

Это ошибка в msxml? любая идея?

thx Jiri

1 Ответ

0 голосов
/ 26 октября 2009

Microsoft изменила способ, которым сериализация новой строки обрабатывается в MSXML 4 и далее, для соответствия стандартам w3wc (см. http://support.microsoft.com/kb/261293)

Я понятия не имею, почему то же самое не было сделано для реализации xml в .Net, но то же самое сделано для веб-сервисов в .Net 2.0.

Когда у меня возникла эта проблема в последний раз, я пришел к выводу, что вам нужно либо учитывать тот факт, что символы новой строки могут быть непредсказуемым образом сериализованы (например, путем замены \r\n на \n), либо вам необходимо 64 закодировать ваш текст (или эквивалент)

...