2009-11-20 14 views

回答

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

在方法名称后需要''。例如。 'SerializeToString '(StackOverflow不允许我编辑少于6个字符) – derekantrican

19

使用XmlSerializer.Serialize方法重载,您可以在其中指定自定义名称空间并将其传递给此处。

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

传递null或空数组不会做的伎俩

+3

请注意,你需要这个答案与结合@ tobsen的答案,以得到我所要求的 - 一个非常干净的XML! – Grzenio

+1

这似乎只是答案的一半,完整答案是由Simon Sanderson提供的 – Mishax

相关问题