Как добавить пространство имен при разборе строки в Xelement?

Я хочу установить пространство имен для 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?
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
860
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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;
}

Привет Магнетрон, спасибо за это. Не могли бы вы также написать, как просто удалить все пространство имен, включая пустое, в приведенном выше примере?

rohit singh 19.03.2019 13:44

@rohitsingh «Пустое» пространство имен означает пространство по умолчанию. Это невозможно удалить. Можете ли вы опубликовать пример того, что вы имеете в виду? Результат, который вы получаете, и желаемый?

Magnetron 19.03.2019 13:47

@rohitsingh в любом случае, я опубликовал код для удаления пространств имен.

Magnetron 19.03.2019 13:47

Моя конечная цель - присоединить этот небольшой фрагмент xml без какого-либо пространства имен к другому xml (у которого есть все пространства имен), и, поскольку удаление пространств имен было для меня недостижимо, я подумал скопировать пространство имен из родительского xml в этот xml. Но если я смогу достичь конечной цели, это будет здорово.

rohit singh 19.03.2019 13:52

@rohitsingh Что ж, если это означает, что вы не хотите, чтобы «xmlns ...» был отображается при преобразовании xml в строку, то вам нужно убедиться, что пространство имен элемента соответствует его родителю, например, вывод Я написал, что Text имеет то же пространство имен, что и ReferResult, поэтому оно не отображается. Но если вы преобразуете в строку только узел Text, будет показано пространство имен.

Magnetron 19.03.2019 13:59

Другие вопросы по теме