Чтобы найти элемент, дано:
XDocument doc = XDocument.Parse(@"<ExecutionGraph>
<If uniqKey=""1"">
<Do>
<If uniqKey=""6"">
<Do />
<Else />
</If>
</Do>
<Else>
<If uniqKey=""2"">
<Do />
<Else>
<If uniqKey=""3"">
<Do />
<Else />
</If>
</Else>
</If>
</Else>
</If>
</ExecutionGraph>");
тогда, довольно легко:
var el = doc.Descendants()
.Where(x => (string)x.Attribute("uniqKey") == "3")
.FirstOrDefault();
(Descendants()
возвращает рекурсивно все элементы)
Затем добавить новый элемент внутри найденного элемента:
var newElement = new XElement("Comment");
el.Add(newElement);
(ясно, что вы должны проверить, что el != null
!)