5

Framework 4.0 ile Web API'sı etrafında gezinme Sadece XML çıktı istedim, bu yüzden JSON biçimlendiricisini formatterler koleksiyonundan kaldırın.Özel XML çıkışı?

<?xml version="1.0"?> 
-<ArrayOfCategory xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">- 
    <Category> 
    <Id>1</Id> 
    <Name>Drink</Name> 
    </Category>- 
    <Category> 
    <Id>2</Id> 
    <Name>Snack</Name> 
    </Category> 
</ArrayOfCategory> 

bir şey daha anlamlı söylemek "Arrayof" düğümünü değiştirmek ister, ve bir çift daha fazla düğüm eklemek gerekir: Şimdi, XMLSerializer çıkışının standart XML değiştirmek istediğiniz "Arrayof" düğümü üzerinde (ek bilgi ile).

Bunu yapmanın kolay bir yolu var mı? veya özel bir biçimlendirici/seralizer yazmalı mıyım?

+0

Bu mümkün mü değil? Yoksa açık bir şeyi mi özlüyorum? ya da çok yeni mi, henüz kimse bir çözümden haberi yok mu? Varsayılan çıktıyı özelleştirmek için GOT var. – user1771591

cevap

7

bir şey daha anlamlı söylemek "Arrayof" düğümünü değiştirmek ve "Arrayof" düğüm yukarıda (ekstra bilgilerle) bir çift daha fazla düğüm eklemek gerekir istiyorum. Eğer XML Bu tür özelleştirmeyi istiyorsanız

, sen XmlFormatter içinde varsayılan olarak kullanılır DataContractSerializer yerine XmlSerializer'ı kullanmalıdır.

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

Ardından, bir sınıfa Kategori koleksiyonunuzu sarın ve [XmlElement], [XmlRoot] kullanın ve [XmlArray] öğe adını özelleştirmek için.

[XmlRoot(ElementName = "node")] 
public class Node 
{ 
    [XmlElement(ElementName= "SomeInfo")] 
    public string Node1; 

    [XmlElement(ElementName = "OtherInfo")] 
    public string Node2; 

    [XmlArray("Categories")] 
    public List<Category> CatList; 
} 

fazla bilgi için, bu MSDN makalede okuyabilirsiniz: İşte bir örnek Controlling XML Serialization Using Attributes.

+0

Teşekkürler, Maggie. XMLSerializer'a zaten geçiş yapmıştım. Sadece şimdi bunun için bir örnek buldum. Ama cevap için teşekkürler! – user1771591