Вы можете использовать Linq для чтения CDATA.
XDocument xdoc = XDocument.Load("YourXml.xml");
xDoc.DescendantNodes().OfType<XCData>().Count();
Очень легко получить значение таким образом.
Вот хороший обзор MSDN: http://msdn.microsoft.com/en-us/library/bb308960.aspx
для .NET 2.0, вы, вероятно, просто должны передать его через Regex:
string xml = @"<section>
<description>
<![CDATA[
This is a ""description""
that I have formatted
]]>
</description>
</section>";
XPathDocument xDoc = new XPathDocument(new StringReader(xml.Trim()));
XPathNavigator nav = xDoc.CreateNavigator();
XPathNavigator descriptionNode =
nav.SelectSingleNode("/section/description");
string desiredValue =
Regex.Replace(descriptionNode.Value
.Replace(Environment.NewLine, String.Empty)
.Trim(),
@"\s+", " ");
, который обрезает значение вашего узла, заменяет символы новой строки пустыми и заменяет пробелы 1+ одним пробелом. Я не думаю, что есть какой-либо другой способ сделать это, учитывая, что CDATA возвращает значительные пробелы.