2011-05-29 16 views
25

का उपयोग करके एक एक्सएमएल नोड को एक मूल्य और एक विशेषता के साथ deserialize कैसे करें मेरे पास मतदान के निर्माण के लिए उपयोग करने योग्य वर्गों के लिए, एक असामान्य xml मतदान से xml deserialize करने के लिए 4 छोटे वर्ग हैं।एएसपीनेट सीरियलाइजेशन

अब, मुझे पता है कि कक्षा से किसी संपत्ति को कैसे सेट किया जाए, xml में किसी निश्चित विशेषता या तत्व से मेल खाने के लिए, और यदि वह तत्व केवल एक स्ट्रिंग है जो आसान है लेकिन क्या होगा यदि तत्व में भी एक विशेषता है निम्नलिखित उदाहरण?

<Questions> 
<Question id="a guid"> 
    <AnswerItems> 
    <AnswerItem Id="a guid">3</AnswerItem> 
    <AnswerItem Id="a guid">2</AnswerItem> 
    <AnswerItem Id="a guid">5</AnswerItem> 
    </AnswerItems> 
</Question> 
</Questions> 

सवाल वर्ग इस प्रकार दिखाई देगा:

[Serializable()] 
public class Question 
{ 
    [XmlAttribute("Id")] 
    public Guid QuestionId { get; set; } 

    [XmlArray("AnswerItems")] 
    [XmlArrayItem("AnswerItem", typeof(AnswerItem))] 
    public AnswerItem[] AnswerItems { get; set; } 
} 

[Serializable()] 
public class AnswerItem 
{ 
    [XmlAttribute("Id")] 
    public Guid QuestionId { get; set; } 

    // how do i fetch the value of this node? 
    // its not a XmlElement and it's not an XmlValue 
} 

ठीक है, तो एक AnswerItem नोड के मूल्य, वह यह है कि क्या मैं के साथ-साथ करना चाहते हैं। मैं आसानी से AnswerItem क्लास का उपयोग नहीं कर सकता, और केवल स्ट्रिंग प्रकार के XmlArray AnswerItems का उपयोग कर सकता हूं और मानों को सरणी में डाल सकता हूं, लेकिन फिर मैं AnswerItem की आईडी विशेषता खो दूंगा।

उत्तर

57

AnswerItem में, Value नामक एक संपत्ति बनाएं और इसे XmlText विशेषता के साथ चिह्नित करें। तत्व में Value संपत्ति में पाठ पढ़ने के लिए यह सेटिंग XmlSerializer का कारण बन जाएगी।

[Serializable()] 
public class AnswerItem 
{ 
    [XmlAttribute("Id")] 
    public Guid QuestionId { get; set; } 

    [XmlText] 
    public string Value { get; set; } 
} 
+2

बस इसे पोस्ट करना चाहता था, मैं एक समान प्रश्न का उत्तर ढूंढ रहा हूं, और यह पहला ऐसा है जिसने मुझे इस तरह के कुछ ढेर में दिखाया ... मैं +10 मैं <3 कर सकता था –