如何移除命名空间前缀。(C#)

5
我有一个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”作为默认命名空间,而不是像上面一样作为“命名”命名空间。
我知道它们可能在语义上是相同的,我只想保持存储内容的一致性。
我想要以下内容。
<Person xmlns="http://www.palantir.za">
        <Name>Jenifer Harvey</Name>
        <BirthDate>1969-11-13</BirthDate>
        <IdentityNumber>6906678550017</IdentityNumber>
        <Sex>Male</Sex>
</Person> 

感谢。

祝好。

Craig。

1个回答

4

只需删除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();

谢谢,这么简单的解决方案我竟然没有想到... :-o - Jim
2
你好。如果XML具有命名空间前缀属性,该怎么办?如何删除属性中的命名空间前缀,例如:<src:Sex des:profession="student">Male</src:Sex>。 - Suresh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接