2010-06-16 5 views
3

У меня есть XElement, в результате преобразования, которое выглядит следующим образом.Как удалить префикс пространства имен. (C#)

<src:Person xmlns:src="http://www.palantir.za"> 
    <src:Name>Jenifer Harvey</src:Name> 
    <src:BirthDate>1969-11-13</src:BirthDate> 
    <src:IdentityNumber>6906678550017</src:IdentityNumber> 
    <src:Sex>Male</src:Sex> 
</src:Person> 

Я хотел бы превратить эту XElement в новый XElement, который имеет «SRC» как пространство имен по умолчанию, а не «под названием» пространство имен, как описано выше.

Я понимаю, что они, вероятно, семантически идентичны, я просто хочу поддерживать согласованность в том, что хранится.

Я хочу следующее.

<Person xmlns="http://www.palantir.za"> 
     <Name>Jenifer Harvey</Name> 
     <BirthDate>1969-11-13</BirthDate> 
     <IdentityNumber>6906678550017</IdentityNumber> 
     <Sex>Male</Sex> 
</Person> 

Благодаря

С уважением

Крейга.

ответ

3

Просто удалите атрибут xmlns:src и добавить новый атрибут xmlns:

XDocument xdoc = XDocument.Parse(
     "<src:Person xmlns:src=\"http://www.palantir.za\">" + 
     " <src:Name>Jenifer Harvey</src:Name>" + 
     " <src:BirthDate>1969-11-13</src:BirthDate>" + 
     " <src:IdentityNumber>6906678550017</src:IdentityNumber>" + 
     " <src:Sex>Male</src:Sex>" + 
     "</src:Person>"); 

xdoc.Root.Add(new XAttribute("xmlns", "http://www.palantir.za")); 
xdoc.Root.Attributes(XNamespace.Xmlns + "scr").Remove(); 
+0

Спасибо, простое решение просто не приходила мне в голову ...: -o – Jim

+2

Привет. Что делать, если xml имеет атрибуты с префиксом пространства имен? Как удалить префикс пространства имен в атрибуте, например: Мужской – Suresh

Смежные вопросы