2009-11-20 3 views

Antwort

114

das alles zusammen stellen - das funktioniert perfekt für mich:

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

zur Verfügung gestellt (var stream = new StringWriter()) kann geändert werden, um var stream = new StringWriter(); Gibt Fehler bei der Codeanalyse, da xmlwriter zweimal entsorgt werden muss. – Archna

+0

Benötigt '' nach dem Methodennamen. Z.B. 'SerializeToString ' (StackOverflow lässt mich nicht weniger als 6 Zeichen bearbeiten) – derekantrican

12

können Sie XmlWriterSettings verwenden und setzen Sie die Eigenschaft omitXMLDeclaration ab auf true als described in the msdn. Verwenden Sie dann den XmlSerializer.Serialize (xmlWriter, objectToSerialize)as described here.

19

Verwenden Sie die Methodenüberladung XmlSerializer.Serialize, in der Sie benutzerdefinierte Namespaces angeben und diese übergeben können.

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

null oder leer Array übergeben wird nicht den Trick

+3

Bitte beachten Sie, dass Sie diese Antwort kombinieren müssen mit @ tobsens Antwort, um zu bekommen, wonach ich gefragt habe - ein wirklich sauberes XML! – Grzenio

+1

Dies scheint nur die Hälfte der Antwort zu sein, die vollständige Antwort wird von Simon Sanderson – Mishax

Verwandte Themen