Çözümümde bir DTO ve bir Etki Alanı projesi ve veri oluşturmak için web api ile bir MVC ön ucu var.MVC Web API XmlSerializerFormat yok sayar ve bunun yerine DataContractSerliazer kullanır
Web api denetleyicisini kurdum ve işlem, DTO nesnesini DataService'den geri alıyor. Ancak hepsi harika, ancak xml'nin döndürülmesini istiyorum ve bazı değerlerin xml özelliklerinde olmasını istiyorum. aşağıdaki gibi
<root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<lookups>
<lookup category="General" field="Alert Type" value="Lack of Transparency" entityid="2273"/>
<lookup category="General" field="Alert Type" value="Unfair Terms " entityid="2274"/>
<lookup category="General" field="Alert Type" value="Operator Concerns" entityid="2275"/>
...
</lookups>
<paymentmethods />
<affiliates />
</root>
Arama sınıftır:
[Serializable]
[XmlSerializerFormat]
public class Lookup
{
[XmlAttribute("category")]
public String Category { get; set; }
[XmlAttribute("field")]
public String Field { get; set; }
[XmlAttribute("value")]
public String Value { get; set; }
[XmlAttribute("entityid")]
public String EntityId { get; set; }
public Lookup(String Category, String Field, String Value, int? EntityId = null)
{
this.Category = Category;
this.Field = Field;
this.Value = Value;
this.EntityId = (EntityId != null ? EntityId.ToString() : null);
}
public Lookup() { }
}
başlangıçta benim ViewModels ile benim DTO nesneleri (örneğin Arama, PAYMENTMETHOD ve Bağlı) vardı, ama benim DTO proje içine taşındı. Ben DTO projesi Hy ViewModels klasöründen hareketli nesneleri Önce benim global.asax
içinde UseXmlSerializer = true
belirledik
, çalışıyor ve ben arzu XML başlamıştı. Hareket ettikten sonra, XmlSerializerFormat
göz ardı ediliyor ve DataContractSerliazer kullanıyor.
Yani DataMember özellikleri kullanılarak, ben xml biçimlendirmek, ancak belli ki xml o [XmlSerializerFormat] ve [XmlAttribute görmezlikten geldiği görülmekte neden
Herhangi düşünceler bağlıyor gibi bazı özellikler Serileştirilecek ayarlayamıyor ("alan")] öznitelikleri?
ben gibi birkaç SO mesajları okudum: üzerinde çalışmak için Global.asax xml Serializer Ayar http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#xml_pertype
: XmlSerializer ignores [XmlAttribute] in WebApi ve
How can you control .NET DataContract serialization so it uses XML attributes instead of elements?
burada çözüm bulundu üretilen XML kök düğümünü oluşturur: http://www.asp.net/web- api/genel bakış/formatlar-ve-model-ciltleme/json-ve-xml-serileştirme # xml_pertype xml Serializer'ı belirli bir tür üzerinde çalışacak şekilde ayarlamaya çalıştım –