Я хочу установить пространство имен для Xelement ниже. Как этого достичь?
string Namespace = "http://mynamespace";
string defaultXml = "<ReferResult><Text> Testing Referred</Text></ReferResult>"
Xelement myXml = XElement.Parse(defaultXml);
// How to add the name space to myXml?





XNamespace Namespace = "http://mynamespace";
string defaultXml = "<ReferResult><Text> Testing Referred</Text></ReferResult>";
XElement myXml = XElement.Parse(defaultXml);
myXml.Name = Namespace + myXml.Name.LocalName;
//If you want the children to have the same namespace, use the following.
//If you want only the parent to have the namespace, omit the code bellow
foreach(var element in myXml.Descendants()){
element.Name = Namespace + element.Name.LocalName;
}
//Output:
//<ReferResult xmlns = "http://mynamespace">
// <Text> Testing Referred</Text>
//</ReferResult>
Обновлено: как указано в комментариях OP, чтобы удалить пространства имен, просто используйте тот же код, но опуская часть пространства имен:
myXml.Name = myXml.Name.LocalName;
foreach(var element in myXml.Descendants()){
element.Name = element.Name.LocalName;
}
@rohitsingh «Пустое» пространство имен означает пространство по умолчанию. Это невозможно удалить. Можете ли вы опубликовать пример того, что вы имеете в виду? Результат, который вы получаете, и желаемый?
@rohitsingh в любом случае, я опубликовал код для удаления пространств имен.
Моя конечная цель - присоединить этот небольшой фрагмент xml без какого-либо пространства имен к другому xml (у которого есть все пространства имен), и, поскольку удаление пространств имен было для меня недостижимо, я подумал скопировать пространство имен из родительского xml в этот xml. Но если я смогу достичь конечной цели, это будет здорово.
@rohitsingh Что ж, если это означает, что вы не хотите, чтобы «xmlns ...» был отображается при преобразовании xml в строку, то вам нужно убедиться, что пространство имен элемента соответствует его родителю, например, вывод Я написал, что Text имеет то же пространство имен, что и ReferResult, поэтому оно не отображается. Но если вы преобразуете в строку только узел Text, будет показано пространство имен.
Привет Магнетрон, спасибо за это. Не могли бы вы также написать, как просто удалить все пространство имен, включая пустое, в приведенном выше примере?