2016-09-14 58 views
0

我有下面的類:C#XML序列化的XMLElement無標籤

[Serializable] 
public class SomeModel 
{ 
    [XmlElement("CustomerName")] 
    public string CustomerName { get; set; } 

    [XmlElement("")] 
    public int CustomerAge { get; set; } 
} 

這(與一些測試數據填充)和序列化使用XmlSerializer.Serialize()結果如下XML:

<SomeModel> 
    <CustomerName>John</CustomerName> 
    <CustomerAge>55</CustomerAge> 
</SomeModel> 

我需要的是:

<SomeModel> 
    <CustomerName>John</CustomerName> 
    55 
</SomeModel> 

意爲第二XMLELEMENT,它不應該公頃有自己的標籤。這甚至有可能嗎?謝謝。

+0

爲什麼你想做那個?當您將此xml轉換爲類SameModel時,它將沒有CustomerAge。 –

+0

我的應用程序正在使用的API需要這種XML結構 –

+0

您是否試過'[XmlText]'?請參閱https://stackoverflow.com/questions/9504150/serialize-ac-sharp-class-to-xml-with-attributes-and-a-single-value-for-the-clas – dbc

回答

4

裝飾CustomerAgeXmlText而不是XmlElement

您還可以到CustomerAgeint的類型更改爲string,如果你不想,你必須採取額外的屬性序列化是這樣的:

public class SomeModel 
{ 
    [XmlElement("CustomerName")] 
    public string CustomerName { get; set; } 

    [XmlText] 
    public string CustomerAgeString { get { return CustomerAge.ToString(); } set { throw new NotSupportedException("Setting the CustomerAgeString property is not supported"); } } 

    [XmlIgnore] 
    public string CustomerAge { get; set; } 
} 
+0

謝謝,但我擊中「有一個錯誤反映類型」時序列化 –

+0

是否有可能您將CustomerAge的類型更改爲字符串從int? – sachin

+0

非常感謝!你是一個救星! –