2009-06-18 22 views
37

के लिए विशेषताएं मैं serializing और वस्तु के साथ एक मुद्दा हो रहा है कैसे जोड़ें, मैं इसे मैं कहाँ एक तत्व है कि एक मूल्य और एक विशेषता की जरूरत है को छोड़कर सभी सही आउटपुट बनाने के लिए मिल सकता है। यहाँ आवश्यक उत्पादन होता है:सी # एक्सएमएल क्रमबद्धता

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

मैं इसके बारे में सभी निर्माण कर सकते हैं लेकिन दस्तावेज़ प्रकार विशेषता निर्धारित करने के लिए एक रास्ता नहीं मिल रहा है, यहाँ जो मुझे देता वस्तु वर्ग

[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;  
} 

का एक खंड है :

<Document>document name</Document> 

बजाय:

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

लेकिन मुझे इसे सही करने का कोई तरीका नहीं मिल रहा है, कृपया सलाह दें।

धन्यवाद

+0

क्षमा मार्क ... आप सिर्फ इतना है कि संपादित करें मेरे सामने में मिल गया है चाहिए:

आम तौर पर आप की तरह कुछ हो सकता था। – Kev

+0

मार्क ग्रेवल ने मेरा दिन बचाया! :-) धन्यवाद! –

उत्तर

56

आप कहाँ type संग्रहीत है?

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

धन्यवाद दोस्तों, क्रमबद्ध, बहुत सराहना की – user107779

+0

मेरे लिए काम नहीं कर रहा –

+0

वाह यह आश्चर्यजनक है, यह बहुत अधिक जटिल होने की उम्मीद कर रहा था। – Sizons

11

string वर्ग एक type संपत्ति नहीं है, तो आप इसे इस्तेमाल नहीं कर सकते वांछित आउटपुट बनाने के लिए। आप इसके बजाय किसी Document वर्ग बनाना चाहिए:

public class Document 
{ 
    [XmlText] 
    public string Name; 

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

और तुम Document

+0

मैं सहमत हूं (बस एक ही चीज़ सबमिट करने वाला था!) ​​ –

7

टाइप करने के लिए ऐसा लगता है कि आप एक अतिरिक्त वर्ग की जरूरत Document संपत्ति बदलना चाहिए:

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

कहाँ एक उदाहरण (में उदाहरण) Type = "word" और Name = "document name" होगा; documents एक List<Document> होगा।

वैसे - सार्वजनिक क्षेत्रों शायद ही कभी एक अच्छा विचार कर रहे हैं ...

संबंधित मुद्दे