簡體   English   中英

從C#LINQ解析XML時,如何保留空白字符

[英]How do I preserve whitespace characters when parsing XML from C# LINQ

我需要在C#代碼或XML文檔中做什么才能讓XDocument解析器讀取XElementValue s的文字空格?


背景

我有一個XML文檔,其中一部分如下所示:

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

我正在使用LINQ查詢將每個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對於<IndentString>值。 但是,沒有為每個值打印任何內容( 注意:XML中的其他轉義值,例如&lt;正確打印其字符數 )。

我需要在C#代碼或XML文檔中做什么才能使我的解析器將完整的空白字符串添加到數據字典中?

嘗試使用LoadOptions.PreserveWhitespace加載XDocument

嘗試以這種方式加載文檔。

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

或者只是將輸入xml修改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM