2010-02-05 31 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>