从C#LINQ解析XML时,如何保留空白字符

时间:2010-02-05 19:20:55

标签: c# .net xml linq whitespace

我需要在C#代码或XML文档中做什么,以便XDocument解析器读取Value的{​​{1}} s的文字空格?

<小时/> 的背景

我有一个XML文档,其中一部分如下所示:

XElement

我正在使用LINQ查询将每个 <NewLineString>&#10;&#13;</NewLineString> <IndentString> </IndentString> 的值添加到数据字典中; XELement部分看起来像这样:

.ForEach

为了测试是否保留了空白值,我打印出数据字典中每个值项的字符编号行。在以下代码中, .ForEach(x => SchemaDictionary.Add( LogicHelper.GetEnumValue(x.Name.ToString()), x.Value)); 表示x,而KeyValuePair只是生成字符整数值的字符串:

Aggregate

我希望x.Value.ToCharArray() .Aggregate<char,string>("",(word,c) => word + ((int)c).ToString() + " " ) )); 值为10 13<NewLineString>值为32 32 32 32。但是,没有为每个值打印任何内容(注意:XML中的其他转义值,例如<IndentString>正确打印了其字符数)。

我需要在C#代码或XML文档中做什么才能让我的解析器将完整的空白字符串添加到数据字典中?

3 个答案:

答案 0 :(得分:8)

尝试使用LoadOptions.PreserveWhitespace

加载XDocument

答案 1 :(得分:1)

尝试以这种方式加载文档。

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

答案 2 :(得分:-3)

或只是将您的输入xml修改为:

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