XElement имеет явное преобразование в String (и кучу других типов ), которые фактически вызовут .Value.Другими словами, вы можете написать это:
var value = (String)elem.Element("TagName");
Я думаю, что это вернет ноль, если фактический элемент также нулевой
-edit-
проверено, вотпример:
var x = new XElement("EmptyElement");
var n = (String)x.Element("NonExsistingElement");
n
будет нулевым после этого.