2009-11-20 7 views
41

मुझे से पहले तत्व में शुरुआत में <?xml version="1.0" encoding="utf-16"?> और xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" के बिना सादे एक्सएमएल प्राप्त करने की आवश्यकता है। मैं यह कैसे कर सकता हूं?मैं xmlserializer केवल सादे xml को क्रमबद्ध कैसे कर सकता हूं?

उत्तर

114

यह सब एक साथ रखा करने के लिए काम नहीं चलेगा - यह मेरे लिए पूरी तरह से काम करता है:

// To Clean XML 
    public string SerializeToString(T value) 
    { 
     var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); 
     var serializer = new XmlSerializer(value.GetType()); 
     var settings = new XmlWriterSettings(); 
     settings.Indent = true; 
     settings.OmitXmlDeclaration = true; 

     using (var stream = new StringWriter()) 
     using (var writer = XmlWriter.Create(stream, settings)) 
     { 
      serializer.Serialize(writer, value, emptyNamepsaces); 
      return stream.ToString(); 
     } 
    } 
+1

द्वारा प्रदान किया जाता है (var stream = new StringWriter()) को var stream = new StringWriter() में बदला जा सकता है; कोड विश्लेषण के साथ त्रुटि देता है क्योंकि यह xmlwriter को दो बार निपटाने के लिए ट्रेस करता है। विधि नाम के बाद – Archna

+0

' 'की आवश्यकता है। E.G. 'SerializeToString ' (StackOverflow मुझे 6 वर्णों से कम संपादन करने नहीं देता है) – derekantrican

12

आप XmlWriterSettings का उपयोग करें और described in the msdn के रूप में सही करने के लिए संपत्ति OmitXmlDeclaration सेट कर सकते हैं। फिर XmlSerializer का उपयोग करें। क्रमबद्ध करें (xmlWriter, objectToSerialize)as described here

19

XmlSerializer.Serialize विधि अधिभार का उपयोग करें जहां आप कस्टम नेमस्पेस निर्दिष्ट कर सकते हैं और वहां से पास कर सकते हैं।

var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); 
serializer.Serialize(xmlWriter, objectToSerialze, emptyNs); 

शून्य या खाली सरणी गुजर चाल

+3

कृपया ध्यान दें कि आप के साथ इस सवाल का जवाब गठबंधन करने के लिए की जरूरत है @ tobsen का जवाब पाने के लिए जो मैं पूछ रहा था - वास्तव में एक साफ एक्सएमएल! – Grzenio

+1

यह उत्तर का केवल आधा प्रतीत होता है, पूर्ण उत्तर साइमन सैंडर्सन – Mishax

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

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