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 の場合、おそらく正規表現を介して渡す必要があります。
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 つ以上の空白を 1 つのスペースに置き換えます。CDATA が重要な空白を返していることを考えると、他に方法はないと思います。