views:

480

answers:

2

What do I need to do in either my C# code or my XML document so that the XDocument parser reads literal whitespace for Values of XElements?


Background

I have an XML document, part of which looks like this:

    <NewLineString>&#10;&#13;</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 &lt; printed 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?

+4  A: 

Try loading your XDocument with the LoadOptions.PreserveWhitespace

SelflessCoder
that fixed it. thanks!
Ben McCormack
A: 

Try loading your document this way.

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