public static void Main()
var xaml = @"<StackPanel>
<TextBlock Text='not example'/>
<!-- Some other stuff... -->
<GridViewColumn Header='example'>
<!-- Some other stuff... -->
var templateXaml = @"<DataTemplate>
<TextBlock Text='example'/>
var doc = XDocument.Parse(xaml);
var template = XElement.Parse(templateXaml);
foreach (var attr in doc.Descendants().Attributes("Text").Where(o => o.Value != "example"))
foreach (var element in doc.Descendants().Where(o => o.Attribute("Header") != null))
element.DescendantNodes().Remove();
element.Add(new XElement(element.Name.LocalName + ".HeaderTemplate", template));
Console.WriteLine(doc.ToString());