2010-10-25 22 views
13

Tôi muốn tuần tự hóa đối tượng của mình thành xml và sau đó đến một chuỗi.Việc tuần tự hóa đối tượng thành xml và chuỗi mà không có r n ký tự đặc biệt

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

Tôi muốn để có được một đơn dòng chuỗi đó sẽ Lok như thế này:

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

Tôi đang sử dụng mã như:

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(); 

này là gần nhất những gì tôi nhận được :

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

Tôi biết rằng tôi có thể xóa "\ r \ n" khỏi chuỗi sau đó. Nhưng tôi không muốn sản xuất chúng nhiều hơn là loại bỏ chúng sau này.

Cảm ơn thời gian của bạn.

Trả lời

12

Bạn có thể thử:

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

mà đối với tôi, cung cấp cho:

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

Cảm ơn Mark, nó hoạt động. Cảm ơn bạn đã chỉnh sửa chủ đề. – Wodzu

7

tôi sử dụng đầu vào ở trên, và đây là một đối tượng chung chung phương pháp chuỗi XML để được tái sử dụng ở bất cứ đâu :

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

Chính xác những gì tôi cần. Cảm ơn bạn! –

+0

Cảm ơn! Nó có thể được thực hiện phương pháp mở rộng cũng có. –

Các vấn đề liên quan