2010-02-05 24 views
6

我需要什麼,無論是在我的C#代碼或我的XML文檔,這樣做的的XDocument解析器Value S的XElement小號讀取文字空白解析XML時如何保留空白字符?從C#LINQ


背景

我有一個XML文檔,其中,部分看起來像這樣:

<NewLineString>&#10;&#13;</NewLineString> 
    <IndentString> </IndentString> 

我使用LINQ添加每個XELement的值以一個數據字典查詢;在.ForEach部分看起來是這樣的:

.ForEach(x => SchemaDictionary.Add(
     LogicHelper.GetEnumValue(x.Name.ToString()), x.Value));  

要測試,看看是否空白值保留,我打印出了一條在數據字典中的每個值項的字符數。在下面的代碼,x表示KeyValuePairAggregate被簡單地使字符整數值的字符串:

x.Value.ToCharArray() 
    .Aggregate<char,string>("",(word,c) => word + ((int)c).ToString() + " ") 
    )); 

我期望看到10 13爲用於<IndentString><NewLineString>值和32 32 32 32。但是,對於每個值都沒有打印(注意:XML中的其他轉義值,例如&lt;正確地打印了它們的字符編號)。

我需要在我的C#代碼或XML文檔中做什麼,以便我的分析器將完整的空白字符串添加到數據字典中?

+0

你是如何加載XML文檔? – 2010-02-05 19:28:09

回答

1

加載你的XDocument嘗試加載文檔這種方式。

XmlDocument doc = new XmlDocument(); 
    doc.PreserveWhitespace = true; 
    doc.Load("book.xml"); 
+0

有關LINQ ['XDocument's](http://msdn.microsoft.com/zh-cn/library/bb345449.aspx),而不是System.Xml ['XmlDocument's](http:// msdn.microsoft.com/en-us/library/6kza7w4k.aspx)。但[我的網頁搜索](https://www.google.com/search?q=.NET+XML+preserve+whitespace)有關'XmlDocument's的答案將我與這個問題聯繫起來,所以這個答案無論如何都是有用的。 – 2013-05-10 18:49:15

-3

或者只是修改您輸入的XML:

<NewLineString>&#10;&#13;</NewLineString> 
<IndentString xml:space="preserve"> </IndentString>