2016-02-12 262 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級別,最好忽略它,因爲這並不重要。