2013-05-30 19 views
7

Web API'sini MVC 4 ile kullanıyoruz ve bizim deve/davasının deve durumunda olması gerekiyor.ASP.NET Web API'si - camelcase'de XML

Biz aşağıdaki kodla JSON için yapmış: Aynı kod maalesef XmlMediaTypeFormatter için çalışmaz

var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single(); 
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

.

Deve vakasında XML'i biçimlendirmenin en şık çözümü ne olurdu?

+3

XmlSerializer onlara saygı ve tercih etmeniz olarak XML serialize gerekir. Değil Json yolu gibi temiz veya kolay değil ama yine de bu bağlantı için daha fazla bilgi için bu bağlantı bir resonable çözüm olabilir http://msdn.microsoft.com/en-us/library/83y7df3e(v=vs.110).aspx – bUKaneer

+0

Ayrıca bu cevabı örnek olarak kontrol edin http://stackoverflow.com/a/22493313/1370442 – bUKaneer

+0

Hem XmlSeralizer hem de XmlFormatter, bunları kullanmamanızı şiddetle tavsiye ettiğim ve Json'un Json gibi donanımları seri hale getirdiğinden emin olduğum geniş bir sorun yelpazesine sahiptir. net veya ServiceStack araçları. –

cevap

5

Çözüm 1: Varolan bir XML şemasını eşleşmesi gerekiyorsa XmlSerializer'ı

Kullanılması çıkan XML üzerinde daha fazla kontrol sahibi olmak XmlSerializer sınıfı kullanmalıdır (deve durumda kullanmak gibi sizin durumunuzda.). XmlSerializer'ı kullanmak için, global.asax dosyasında veya API denetleyici sınıfınızın yapıcısında aşağıdaki yapılandırmayı ayarlamanız gerekir.

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter; 
xml.UseXmlSerializer = true; 

Bu değişikliği yaptıktan sonra XML sonucu etkileyecek sizin varlıklar için [DataMember] [DataContract] ekleyebilir ve.

[DataContract(Name = "USER")] 
public class User 
{ 
    [DataMember(Name = "FIRSTNAME")] 
    public string FirstName;  

    [DataMember(Name = "LASTNAME")] 
    public string LastName; 
} 

Çözüm 2: Oluşturma özel XML Formatter sınıf

Kendi Medya Biçimlendirici sınıfını geliştirmek ve olmak solüsyon 1. den uzun zaman ve emek alacak varsayılan XML formatter.It olarak ayarlamak gerekir

Özel ortam biçimlendirici sınıfı oluşturabilir lütfen aşağıdaki bağlantıya bakın. Eğer sınıflar ve onların özelliklerine uygun XmlAttributes sıçrayabilir Eğer

http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters

+0

Hiç kimse çözüm 2 açık kaynak yapmadı :( Biçimlendiriciyi Microsoft'tan kopyalamak için geçen yıl denedim, ancak çok fazla bağımlılığı vardı. – Schiavini