2009-06-18 23 views
37

Serileştirme ve nesne ile ilgili bir sorun yaşıyorum, bir değer ve bir öznitelik gerektiren bir Öğeye sahip olduğum durumlar haricinde tüm doğru çıktıları oluşturabilirim. İşte gerekli çıktı şöyledir:C# XML Serileştirme için öznitelikleri ekleme

<Root> 
    <Method>Retrieve</Method> 
    <Options> 
    <Filter> 
     <Times> 
     <TimeFrom>2009-06-17</TimeFrom> 
     </Times> 
     <Document type="word">document name</Document> 
    </Filter> 
    </Options> 
</AdCourierAPI> 

ben her şeyi inşa edebilirsiniz ama Belge türü özelliğini ayarlamak için bir yol bulamıyorum, burada bana verir nesne sınıfının

[XmlRoot("Root"), Serializable]  
public class Root  
{  
    [XmlElement("Method")]  
    public string method="RetrieveApplications";  
    [XmlElement("Options")]  
    public _Options Options;  
}  
public class _Options  
{ 
    [XmlElement("Filter")]  
    public _Filter Filter;  
} 
public class _Filter  
{ 
    [XmlElement("Times")]  
    public _Times Times;  
    [XmlElement("Documents")]  
    public string Documents;  
} 

bölümüdür :

<Document>document name</Document> 

ziyade:

<Document type="word">document name</Document> 

ama bunu düzeltmenin bir yolunu bulamıyorum, lütfen önerin.

Teşekkür

+0

Maalesef Marc ... sadece benden önce o düzenlemeyi var olmalı:

Normalde gibi bir şey olabilir. – Kev

+0

Mark Gravell günümü kurtardı! :-) Teşekkür ederim! –

cevap

56

?

class Document { 
    [XmlAttribute("type")] 
    public string Type { get; set; } 
    [XmlText] 
    public string Name { get; set; } 
} 


public class _Filter  
{ 
    [XmlElement("Times")]  
    public _Times Times;  
    [XmlElement("Document")]  
    public Document Document;  
} 
+0

Teşekkürler Guys, sıralanmış, çok takdir – user107779

+0

benim için çalışmıyor –

+0

Wow bu şaşırtıcı, bu çok daha karmaşık olmasını bekliyordum. – Sizons

11

string sınıf bir type özelliği yok, bu nedenle istenen çıktıyı oluşturmak için kullanamazsınız. Bunun yerine Document sınıf oluşturmak olmalıdır:

public class Document 
{ 
    [XmlText] 
    public string Name; 

    [XmlAttribute("type")] 
    public string Type; 
} 

Ve sen fazladan sınıf gerekir gibi geliyor Document

+0

Ben concur (aynı şeyi göndermek üzereydik!) –

7

yazmak için Document özelliğini değiştirmek gerekir:

public class Document 
{ 
    [XmlAttribute("type")] 
    public string Type { get; set; } 
    [XmlText] 
    public string Name { get; set; } 
} 

Nerede bir örnek (içinde örnek) Type = "word" ve Name = "document name"; documents, bir List<Document> olacaktır. Bu arada

- Kamu alanlar nadiren iyi bir fikir vardır ... Eğer type saklanan var mı

İlgili konular