2016-02-12 184 views
1

我有下面的类结构:XML命名空间

public class Child { ... } 

[XmlRoot("parent", Namespace="parentNamespace")] 
public class Parent 
{ 
    [XmlElement(Namespace="childNamespace")] 
    public Child Child { get; set; } 
} 

的我尝试使用命名空间序列化:

namespaces.Add(string.Empty, "parentNamespace"); 
namespaces.Add("c", "childNamespace"); 

而且我得到了在父元素中声明的孩子命名空间:

<parent xmlns:c="childNamespace" xmlns="parentNamespace"> 
    <c:Child ... /> 
</parent> 

但是我想将子名称空间声明移动到子元素。像这样:

<parent xmlns="parentNamespace"> 
    <c:Child ... xmlns:c="childNamespace"> 
</parent> 

我该如何把XML属性做到这一点?

+0

出于兴趣,你为什么在意?这两者在语义上是等价的 - 为什么你在命名空间设置的地方重要? –

+0

其次是接近我正在使用的手册 – Waldemar

+0

但是,阅读XML时应该对它们进行相同的处理... –

回答

3

没有符合要求的XML处理器将关心你的两种情况之间的差异,你也不应该。这就像属性的排序。在XML级别上的差异是微不足道的。您不得不放弃XML之下的文本级别来检测或控制这种差异,但在XML级别,最好忽略它,因为这并不重要。