Как добавить пространство имен при разборе строки в Xelement? - PullRequest
0 голосов
/ 19 марта 2019

Я хочу установить пространство имен на 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?

1 Ответ

1 голос
/ 19 марта 2019
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;
}
...