2009-11-20 18 views

Trả lời

114

Để đặt này tất cả cùng nhau - điều này hoạt động hoàn hảo cho tôi:

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

sử dụng (var stream = new StringWriter()) có thể được thay đổi thành var stream = new StringWriter(); Cung cấp cho lỗi với phân tích mã vì nó tres để xử lý xmlwriter hai lần. – Archna

+0

Cần '' sau tên phương thức. VÍ DỤ. 'SerializeToString ' (StackOverflow không cho phép tôi chỉnh sửa dưới 6 ký tự) – derekantrican

12

Bạn có thể sử dụng XmlWriterSettings và thiết lập thuộc tính OmitXmlDeclaration true như described in the msdn. Sau đó, sử dụng XmlSerializer.Serialize (xmlWriter, objectToSerialize)as described here.

19

Sử dụng quá tải phương thức XmlSerializer.Serialize nơi bạn có thể chỉ định không gian tên tùy chỉnh và chuyển đến đây.

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

đi qua mảng null hoặc rỗng sẽ không làm các trick

+3

Xin lưu ý rằng bạn cần phải kết hợp với câu trả lời này @ tobsen của câu trả lời để có được những gì tôi đã yêu cầu - một xml thực sự sạch sẽ! – Grzenio

+1

Điều này dường như chỉ là một nửa của câu trả lời, câu trả lời đầy đủ được cung cấp bởi Simon Sanderson – Mishax

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