2016-09-14 7 views
0

У меня есть следующий класс:C# XML сериализации XMLElement без тега

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

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

, который (при заселена с некоторыми тестовыми данными) и Serialized с помощью XmlSerializer.Serialize() приводит к следующему XML:

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

Что мне нужно иметь:

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

Значение для 2-го 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

Отделка CustomerAge с XmlText вместо XmlElement.

Вы должны будете также изменить тип CustomerAge от int к 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 на String из int? – sachin

+0

Большое спасибо! Ты спасатель! –