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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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()); } |