2011-02-01 48 views
3

這很奇怪。我有一個WCF Message,我試圖將正文的內容讀入XmlDocument。消息體看起來像這樣在電線上的內容(當與WCF跟蹤檢查導通):XmlReader在&符號實體後切斷空白符號?

<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

我無法重現您的問題;我的測試中保留了空白。 – 2011-02-01 18:09:59

回答

3

您可以通過刪除XmlReader來簡化代碼。然後在XmlDocument上設置PreserveWhiteSpace。您可以將您的所有代碼替換爲:

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