Heute wollte ich ein Objekt nach Plain XML ohne Namespaces und ohne XML-Deklaration serialisieren. Der XmlSerializer fügt jedoch einen Standard Namespace und die XML-Deklaration automatisch ein. Um das zu vermeiden gibt es die folgende Möglichkeit:
public string ToXml()
{
//Ohne XML-Doc-Deklaration
var settings = new XmlWriterSettings() {
Indent = false, OmitXmlDeclaration = true };
var stream = new MemoryStream();
using (XmlWriter xw = XmlWriter.Create(stream, settings))
{
//Leere Namespace-Deklaration
var ns = new XmlSerializerNamespaces(
new[] { XmlQualifiedName.Empty });
var x = new XmlSerializer(GetType(), "");
x.Serialize(xw, this, ns);
}
return Encoding.UTF8.GetString(stream.ToArray());
}