What do I need to do in either my C# code or my XML document so that the XDocument parser reads literal whitespace for Value
s of XElement
s?
Background
I have an XML document, part of which looks like this:
<NewLineString> </NewLineString>
<IndentString> </IndentString>
I'm adding the values of each XELement
to a data dictionary using a LINQ query; the .ForEach
part looks like this:
.ForEach(x => SchemaDictionary.Add(
LogicHelper.GetEnumValue(x.Name.ToString()), x.Value));
To test to see if the whitespace values were preserved, I'm printing out a line of the character numbers of each value item in the data dictionary. In the following code, x
represents a KeyValuePair
and the Aggregate
is simply making a string of the character integer values:
x.Value.ToCharArray()
.Aggregate<char,string>("",(word,c) => word + ((int)c).ToString() + " " )
));
I expected to see 10 13
for the <NewLineString>
value and 32 32 32 32
for the <IndentString>
value. However, nothing was printed for each value (note: other escaped values in the XML such as <
prin开发者_如何学Pythonted their character numbers correctly).
What do I need to do in either my C# code or my XML document so that my parser adds the complete whitespace string to the Data Dictionary?
Try loading your XDocument with the LoadOptions.PreserveWhitespace
Try loading your document this way.
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load("book.xml");
or just modify your input xml to:
<NewLineString> </NewLineString>
<IndentString xml:space="preserve"> </IndentString>
精彩评论