5

फ्रेमवर्क 4.0 के साथ वेब एपीआई के साथ खेलना चाहता था केवल एक्सएमएल आउटपुट चाहता था, इसलिए फॉर्मेटर्स संग्रह से जेएसओएन फॉर्मेटर हटा दिया।कस्टम एक्सएमएल आउटपुट?

<?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> 

मैं "Arrayof" नोड को बदलने के लिए कुछ और अधिक सार्थक कहना चाहते हैं, और कुछ और नोड्स जोड़ने की जरूरत: अब, मैं मानक XML कि XmlSerializer outputting है संशोधित करना चाहते हैं (अतिरिक्त जानकारी के साथ) "Arrayof" नोड के ऊपर।

क्या ऐसा करने का कोई आसान तरीका है? या मुझे कस्टम फॉर्मेटर/सेरालाइज़र लिखना है?

+0

क्या यह संभव नहीं है? या क्या मुझे कुछ याद आ रही है? या यह इतना नया है, अभी तक कोई समाधान नहीं जानता है? डिफ़ॉल्ट आउटपुट को कस्टमाइज़ करने का एक तरीका बन गया है। – user1771591

उत्तर

7

मैं "Arrayof" नोड को बदलने के लिए कुछ और अधिक सार्थक कहने के लिए, और "Arrayof" नोड से ऊपर (अतिरिक्त जानकारी के साथ) कुछ और नोड्स जोड़ने की जरूरत करना चाहते हैं।

आप अपनी XML के इस प्रकार के कस्टमाइज़ेशन चाहते हैं, आप XmlSerializer बजाय DataContractSerializer कि XmlFormatter में डिफ़ॉल्ट रूप से प्रयोग किया जाता है के उपयोग करना चाहिए।

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

उसके बाद, आप किसी कक्षा श्रेणी के अपने संग्रह लपेट कर सकते हैं और [XmlElement] का उपयोग करें [XmlRoot], और [XmlArray] तत्व नाम अनुकूलित करने के लिए।

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

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

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

अधिक जानकारी के लिए, तो आप इस MSDN लेख का उल्लेख कर सकते: यहाँ एक उदाहरण है Controlling XML Serialization Using Attributes

+0

धन्यवाद, मैगी। मैं पहले से ही XMLSerializer पर स्विच कर चुका था। बस इसे करने के लिए एक उदाहरण मिला। लेकिन प्रतिक्रिया के लिए धन्यवाद! – user1771591