В блогах MSDN есть запись , в которой показано, как легко (разумно) обойти эту проблему. Перед выводом XML вы захотите выполнить этот код:
foreach (XElement e in root.DescendantsAndSelf())
{
if (e.Name.Namespace == string.Empty)
{
e.Name = ns + e.Name.LocalName;
}
}
Альтернатива, как упоминает автор, заключается в добавлении к имени каждого элемента пространства имен по мере его добавления, но это кажется более приятным решением, поскольку оно более автоматизировано и экономит немного времени на ввод.