2017-04-10 62 views
0

我的陣列項目可以有不同的名稱,但它們都有簡單的字符串值,例如:的XmlSerializer:序列化元素的數組不同的元素名稱字符串

<MyArray> 
    <TypeA>foo</TypeA> 
    <TypeA>bar</TypeA> 
    <TypeB>bazz</TypeB> 
</MyArray> 

如何實現這一目標?

我期待在MSDN上的文檔在這裏:https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx

有看起來像我想要的一個例子,但我不能得到它的工作方式,他們說,這應該:

public class Employee { 
    public string Name; 
} 

public class Group { 
    [XmlArrayItem("MemberName")] 
    public Employee[] Employees; 
} 

生成的XML將按說是這樣的:

<Group> 
    <Employees> 
     <MemberName>Haley</MemberName> 
    </Employees> 
</Group> 

然而,當我運行這個例子,我得到以下XML來代替:

<Group> 
    <Employees> 
     <MemberName> 
      <Name>Haley</Name> 
     </MemberName> 
    </Employees> 
</Group> 

我假設文檔中有一個錯誤(我沒有看到他們的代碼中應該神奇地導致類Employee的值被它的Name屬性的值替換),但是我我真的很想讓我的XML看起來像他們的(錯誤的)例子。

回答

0

當我發佈問題時,我找到了解決方案:使用XmlTextAttribute。

在他們的例子中,Employee類應該是這樣的:

public class Employee { 
    [XmlText] 
    public string Name; 
} 

在我的情況,我的集合可以包含類型A和類型B,其中每個類型具有帶有[XMLTEXT]屬性一個構件。

+0

此外,這表明我不熟悉XML序列化,可以選擇使用[XmlElement]而不是[XmlArray]裝飾的項目數組,這會導致單個項目與最高級別屬性一起序列化的類。這實際上是我真正需要的,所以我將它重寫爲[XmlElement] List MyTypeACollection {get; set;} [XmlElement] TypeB MyTypeB {get; set;} –

相關問題