Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xml with spaces as InnerText

Tags:

c#

xml

whitespace

I'm parsing Xml data which has entries like this:

<item name="UserText" type_name="gh_string" type_code="10">      </item>

I'm supposed to read the 6 spaces as a String, but both the InnerText and InnerXml values of the System.Xml.XmlNode are zero length Strings.

Is there any way I can get at this whitespace data in existing files and what do I need to do in the future to prevent this sort of screw up?

like image 293
David Rutten Avatar asked Sep 06 '25 03:09

David Rutten


1 Answers

XML is ignoring that whitespace. If you need to preserve it, you should insert an xml:space="preserve" attribute into your elements. Something like this, which I think is going to preserve your whitespace wherever the XML is consumed.

<item xml:space="preserve" name="UserText" type_name="gh_string" type_code="10">      </item>

Another option that will work with LINQ-to-XML is to use the PreserveWhitespace load option. Example:

XElement element = XElement.Parse(xml, LoadOptions.PreserveWhitespace);

You should also be able wrap the whitespace in a CData tag, haven't tested.

like image 53
Anthony Pegram Avatar answered Sep 07 '25 20:09

Anthony Pegram