【问题标题】:XmlReader chopping off whitespace after ampersand entity?XmlReader 在 & 实体后切断空格?
【发布时间】:2011-02-01 17:33:04
【问题描述】:

这很奇怪。我有一个 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;amp; 之后的多余空格去哪里了?

【问题讨论】:

  • 我无法重现您的问题;我的测试中保留了空格。

标签: wcf escaping entity xmlreader


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2011-03-07
    相关资源
    最近更新 更多