Выходной XML-формат ServiceStack - атрибут xml

Я использую ServiceStack и мне нужно визуализировать XML в определенном формате.

Вот мой класс POCO

[DataContract]
public class LookupModelBase
{
    [XmlAttribute, DataMember]
    public int Id { get; set; }

    [XmlText, DataMember]
    public string Label { get; set; }
}

И ожидаемый результат должен быть как ниже.

<LookupModelBase Id="1">
   <Label>Label 1</Label>
</LookupModelBase>

Однако я получаю вывод, как показано ниже

<LookupModelBase>
   <Id>1</Id>
   <Label>Label 1</Label>
</LookupModelBase>

Как я могу исправить эту проблему.

2 ответа

Решение

Я решил,

public static class CustomServiceStackXmlFormat
{
    public static string Format = "application/xml";

    public static void Serialize(IRequest req, object response, Stream stream)
    {
        System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(response.GetType());
        xmlSerializer.Serialize(stream, response);
    }

    public static object Deserialize(Type type, Stream stream)
    {
        System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type.GetType());
        var obj = ((Type)xmlSerializer.Deserialize(stream));
        return obj;
    }
}

В вашем AppHost.cs

this.ContentTypes.Register(CustomServiceStackXmlFormat.Format, CustomServiceStackXmlFormat.Serialize, CustomServiceStackXmlFormat.Deserialize);

ServiceStack использует.NET XML XML DataContractSerializer, который позволяет настраивать только с помощью атрибутов.NET DataContract, но не атрибутов XmlSerializer, которые вы также используете.

Другие вопросы по тегам