Это расширение к ответам выше, если в вашем xml определено пространство имен (xmlns
), то при добавлении потомков вы получите неприятный побочный эффект - xmlns = ""
при добавлении в ваш новый дочерний элемент.
То, что вы хотите сделать (при условии, что добавляемый элемент принадлежит тому же пространству имен, что и его родительский элемент), - это взять пространство имен у родительского элемента parentElement.GetDefaultNamespace()
.
var child = new XElement(parentElement.GetDefaultNamespace()+"Snippet", new XAttribute("Attr1", "42"), new XAttribute("Attr2", "22"));
child.Add(new XAttribute("Attr3", "777"));
parentElement.Add(child);
для родительских элементов с несколькими пространствами имен вы можете выбрать, какое из них использовать, изменив значение с parentElement.GetDefaultNamespace()+"Snippet"
на parentElement.GetNamespaceOfPrefix("namespacePrefixThatGoesWithColon")+"Snippet"
* 1011 например *
var child = new XElement(parentElement.GetNamespaceOfPrefix("namespacePrefixThatGoesWithColon")+"Snippet", new XAttribute("Attr1", "42"), new XAttribute("Attr2", "22"));