это было бы намного проще с Linq to XML, есть ли причина, по которой вы его не используете?
Это непроверенный код, который я написал на макушке, но он должен быть довольно близко, он показывает, как вы будете использовать Linq для решения той же проблемы:
XElement root = XDocument.Load(fileName).Root; //get the root element of the XML document
foreach (var controlElement in root.Descendants("Control").Where(c=>c.Attributes[0] != null && c.Attributes[0].value == helpId)) //get all of the control elements with the appropriate helpid value
{
if (controlElement.Parent == null) continue; // it's always good to be defensive
controlElement.Parent.Attributes.Add("NewAttribute", string.Empty);
}