&符号实体后,XmlReader切断了空格?

时间:2011-02-01 17:33:05

标签: wcf escaping entity xmlreader

这很奇怪。我有一个WCF Message,我正在尝试将正文的内容读入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);

messageDoc中生成的XML如下所示:

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

那么原始&amp;之后的额外空格去了哪里?

1 个答案:

答案 0 :(得分:3)

您可以通过删除XmlReader来简化代码。然后在XmlDocument上设置PreserveWhiteSpace。您可以用以下代码替换所有代码:

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