public static void Main()
<spec name='fald' value='100'>
<name foo='' bar='askdh'></name>
var doc = XElement.Parse(xml);
var childrenToDelete = doc.XPathSelectElements("//spec/*")
.Where(elem => string.IsNullOrEmpty(elem.Value)
|| elem.Attributes().All(attr => string.IsNullOrEmpty(attr.Value))))
foreach (var child in childrenToDelete)
Console.WriteLine("Result:");
Console.WriteLine(doc.ToString());