Как сохранить пробелы при анализе XML из C# LINQ
что мне нужно сделать в коде C# или XML-документе, чтобы синтаксический анализатор XDocument считывал литеральные пробелы для Value
С XElement
s?
фон
у меня есть XML-документ, часть которого выглядит так:
<NewLineString>
</NewLineString>
<IndentString> </IndentString>
я добавляю значения каждого XELement
в словарь данных с помощью запроса LINQ;.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, такие как <
напечатано их номера символов правильно).
что мне нужно сделать в моем коде C# или в моем XML-документе, чтобы мой синтаксический анализатор добавил полную строку пробела в словарь данных?
3 ответов
попробуйте загрузить свой XDocument с помощью LoadOptions.PreserveWhitespace
попробуйте загрузить документ таким образом.
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load("book.xml");
или просто измените входной xml на:
<NewLineString> </NewLineString>
<IndentString xml:space="preserve"> </IndentString>