Ваш код дал мне ожидаемые результаты при тестировании. Я приказал попробовать, я бросил небольшой тест в консольное приложение. Я использовал следующий XML:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<user>
<given-names>A.B.</given-names>
</user>
<user>
<given-names>Y.Z.</given-names>
</user>
</root>
Затем я создал новый проект консольного приложения и бросил его в класс Program:
class Program
{
static void Main(string[] args)
{
XDocument doc = XDocument.Load("XMLFile1.xml");
foreach (XElement initial in doc.XPathSelectElements("//given-names"))
{
string v = initial.Value.Replace(".", ". ").TrimEnd(' ');
initial.SetValue(v);
}
Console.WriteLine(doc.ToString());
}
}
Получено желаемое значение:
<root>
<user>
<given-names>A. B.</given-names>
</user>
<user>
<given-names>Y. Z.</given-names>
</user>
</root>
Должно быть что-то еще, что вызывает проблему здесь. В какой среде вы работаете? Как вы конвертируете XDocument в строку для вывода?