using System.Collections;
using System.Collections.Generic;
using System.Data.DataSetExtensions;
public static void Main()
<informationType>15</informationType>
<textSubject>4</textSubject>
<informationType>47</informationType>
<freeText>My required text</freeText>
<informationType>733</informationType>
var doc = XDocument.Parse(input);
var freeTexts = doc.Descendants("textInfo")
.Where(tf => tf.Element("freeText").Element("informationType") != null &&
tf.Element("freeText").Element("informationType").Value.Equals("47") &&
tf.Elements("freeText").Count() > 1)
.Select(tf => tf.Elements("freeText").Skip(1).Single().Value).ToList();
Console.WriteLine(freeTexts.Count());
foreach(var text in freeTexts)
Console.WriteLine(""+text);