На самом деле есть две вещи, которые могут варьироваться.
a) Вы читаете Xml, используя XDocument.Load, а также XElement.Load.При изменении вы используете Elements, а при сохранении - XDocument.
b) Поскольку иерархия в XML имеет вид (Items.Item), было бы лучше использовать Descendants для анализа элементов.
Полный код
public void CustomSettingXML_WriteValue(string key, string value)
{
XDocument doc = XDocument.Load(xmlFile);
var elements = from x in doc.Descendants("Item") select x;
foreach (var s in elements)
{
if (s.Attribute("Text").Value == key)
{
s.Attribute("Value").Value = value;
doc.Save(@xmlFile);
break;
}
}
}