c# - 更改/重命名命名空间前缀

标签 c# namespaces linq-to-xml xelement

我有一个包含这些元素的 XELEMENT

<customer>
    <ns8:title xmlns:ns8="http://ws.xxx.com/xxx/model/common">B< /ns8:title>
    <ns9:firstname xmlns:ns9="http://ws.xxx.com/xxx/model/common">Bob< /ns9:firstname>
    <ns10:lastname xmlns:ns10="http://ws.xxx.com/xxx/model/common">Petier< /ns10:lastname>
    <ns11:bday xmlns:ns11="http://ws.xxx.com/xxx/model/common">19310227< /ns11:bday>
    <ns12:rank xmlns:ns12="http://ws.xxx.com/xxx/model/common">1< /ns12:rank>
</customer>

我想像这样转换前缀。
<customer>
    <ns1:title xmlns:ns1="http://ws.xxx.com/xxx/model/common">B< /ns1:title>
    <ns2:firstname xmlns:ns2="http://ws.xxx.com/xxx/model/common">Bob< /ns2:firstname>
    <ns3:lastname xmlns:ns3="http://ws.xxx.com/xxx/model/common">Petier< /ns3:lastname>
    <ns4:bday xmlns:ns4="http://ws.xxx.com/xxx/model/common">19310227< /ns4:bday>
    <ns5:rank xmlns:ns5="http://ws.xxx.com/xxx/model/common">1< /ns5:rank>
< /customer>

我试图删除属性但没有运气..

任何的想法?

最佳答案

您应该删除现有的命名空间定义属性(如果有)并添加一个新属性:

element.Add(new XAttribute(XNamespace.Xmlns + "ns1", "http://ws.xxx.com/xxx/model/common"));

通过添加显式命名空间属性,您将强制 XElement 使用它进行序列化。

关于c# - 更改/重命名命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254960/

相关文章:

.net - 性能:XDocument 与 XmlDocument

c# - Linq to XML - 使用 linq query.n 时出现空引用异常

c# - DbParameter IsNullable 功能?

java - xquery 转换在元素中创建空命名空间

namespaces - socket.io 中的命名空间将不起作用

PHP 命名空间 : equivalent to C# using

c# - 删除 XML 节点集合中的空/空白元素

c# - 为什么我没有被注册为客户?

c# - Windows 8 上 Windows Phone 的 Motion API 的直接等效项是什么?

c# - WinRT平台是否可以根据目标类型获取资源