XmlReader отсекает пробел после амперсанда? - PullRequest
3 голосов
/ 01 февраля 2011

Это странно. У меня есть WCF Сообщение , и я пытаюсь прочитать содержимое тела в XmlDocument. Содержимое тела сообщения на проводе выглядит так (при проверке с включенной трассировкой WCF):

<abc>
    <timeZone>(GMT-05:00) Eastern Time (US &amp; Canada)</timeZone>
</abc>

Код для читателя выглядит так:

XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = false;
settings.CheckCharacters = false;
XmlReader bodyReader = XmlReader.Create(
        message.GetReaderAtBodyContents().ReadSubtree(), settings);
XmlDocument messageDoc = new XmlDocument();
messageDoc.Load(bodyReader);

Полученный XML-код в messageDoc выглядит следующим образом:

<abc>
    <timeZone>(GMT-05:00) Eastern Time (US &Canada)</timeZone>
</abc>

Так, куда же пошли лишние пробелы после оригинального &amp;?

1 Ответ

3 голосов
/ 01 февраля 2011

Вы можете упростить код, удалив XmlReader.Затем установите PreserveWhiteSpace на XmlDocument.Вы можете заменить весь свой код на:

XmlDocument messageDoc = new XmlDocument() { PreserveWhitespace = true };
messageDoc.Load(message.GetReaderAtBodyContents().ReadSubtree());
...