2010-10-25 11 views
13

मैं अपने ऑब्जेक्ट को xml और फिर स्ट्रिंग पर क्रमबद्ध करना चाहता हूं।एक्सएमएल और स्ट्रिंग के बिना ऑब्जेक्ट का सीरियलाइजेशन r n विशेष वर्ण

<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject> 

मैं ऐसे कोड का उपयोग कर रहा:

XmlWriterSettings settings = new XmlWriterSettings(); 
    settings.OmitXmlDeclaration = true; 
    settings.Indent = true; 
    StringWriter StringWriter = new StringWriter(); 
    StringWriter.NewLine = ""; //tried to change it but without effect 
    XmlWriter writer = XmlWriter.Create(StringWriter, settings); 
    XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); 
    namespaces.Add(string.Empty, string.Empty); 
    XmlSerializer MySerializer= new XmlSerializer(typeof(MyObject)); 
    MyObject myObject = new MyObject { Name = "Vladimir", Location = "Moskov" }; 

    MySerializer.Serialize(writer, myObject, namespaces); 
    string s = StringWriter.ToString(); 

यह सबसे करीब है मैं क्या मिलेगा

public class MyObject 
    { 
    [XmlElement] 
    public string Name 
    [XmlElement] 
    public string Location; 
    } 

मैं एक एकल लाइन स्ट्रिंग जो इस तरह लोक जाएगा प्राप्त करने के लिए चाहते हैं :

<MyObject>\r\n <Name>Vladimir</Name>\r\n <Location>Moskov</Location>\r\n</MyObject> 

मुझे पता है कि मैं स्ट्रिंग से "\ r \ n" को हटा सकता हूं। लेकिन मैं उन्हें बाद में हटाने के बजाय उन्हें बिल्कुल उत्पादन नहीं करना चाहता हूं।

आपके समय के लिए धन्यवाद।

उत्तर

12

आप की कोशिश कर सकते:

settings.NewLineHandling = NewLineHandling.None; 
settings.Indent = false; 

जो मेरे लिए, देता है:

<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject> 
+0

धन्यवाद मार्क, यह काम करता है। विषय में सुधार के लिए भी धन्यवाद। – Wodzu

7

मैं ऊपर इनपुट का इस्तेमाल किया, और यहाँ कहीं भी फिर से इस्तेमाल किया जा करने के लिए XML स्ट्रिंग विधि करने के लिए एक सामान्य वस्तु है :

public static string ObjectToXmlString(object _object) 
{ 
    string xmlStr = string.Empty; 

    XmlWriterSettings settings = new XmlWriterSettings(); 
    settings.Indent = false; 
    settings.OmitXmlDeclaration = true; 
    settings.NewLineChars = string.Empty; 
    settings.NewLineHandling = NewLineHandling.None; 

    using (StringWriter stringWriter = new StringWriter()) 
    { 
     using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings)) 
     { 
      XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); 
      namespaces.Add(string.Empty, string.Empty); 

      XmlSerializer serializer = new XmlSerializer(_object.GetType()); 
      serializer.Serialize(xmlWriter, _object, namespaces); 

      xmlStr = stringWriter.ToString(); 
      xmlWriter.Close(); 
     } 

     stringWriter.Close(); 
    } 

    return xmlStr; 
} 
+0

बिल्कुल वही मुझे क्या चाहिए। धन्यवाद! –

+0

धन्यवाद! इसे विस्तार विधि भी बनाया जा सकता है। –

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