2010-10-25 22 views
13

Nesnemi xml'ye ve ardından bir dizeye serileştirmek istiyorum.Nesnenin xml'ye ve dizgeye dizilimi r n özel karakterler olmadan

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

Böyle kod kullanıyorum: Bu ne olsun en yakın olan

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

Böyle lok bir tek satır dize elde etmek istiyorum :

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

Daha sonra dizeden "\ r \ n" öğesini kaldırabileceğimi biliyorum. Ama onları daha sonra çıkarmak yerine onları üretmemek istiyorum.

Zaman ayırdığınız için teşekkür ederiz.

cevap

12

Sen deneyebilirsiniz: Yukarıdaki giriş kullanılan

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

Teşekkürler Mark, işe yarıyor. Konuda da düzeltme için teşekkürler. – Wodzu

7

ve burada herhangi bir yerde yeniden kullanılmak üzere XML dizesi yöntemine genel bir nesnedir:

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

hangi benim için verir :

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

Tam olarak ihtiyacım olan şey. Teşekkür ederim! –

+0

Teşekkürler! Ayrıca uzatma yöntemi yapılabilir. –