Как убрать префикс пространства имен. (С #) - PullRequest
3 голосов
/ 16 июня 2010

У меня есть XElement, полученный в результате преобразования, которое выглядит следующим образом:

<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 используется src'именованное' пространство имен, как указано выше.

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

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

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

Спасибо

С уважением

Крейг.

1 Ответ

3 голосов
/ 16 июня 2010

Просто удалите атрибут 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();
...