Eu preciso obter xml simples, sem o <?xml version="1.0" encoding="utf-16"?>
no início e xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
no primeiro elemento de XmlSerializer
. Como eu posso fazer isso?
c#
.net
xml-serialization
xml-declaration
Grzenio
fonte
fonte
using( writer )
, como pode ser visto nesta pergunta: stackoverflow.com/a/11192524/2144408 .Use a
XmlSerializer.Serialize
sobrecarga do método onde você pode especificar namespaces personalizados e passar isso para lá.var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); serializer.Serialize(xmlWriter, objectToSerialze, emptyNs);
passar array nulo ou vazio não resolverá
fonte
Você pode usar XmlWriterSettings e definir a propriedade OmitXmlDeclaration como true conforme descrito no msdn . Em seguida, use o XmlSerializer.Serialize (xmlWriter, objectToSerialize) conforme descrito aqui .
fonte
Isso gravará o XML em um arquivo em vez de em uma string. Bilhete de objeto é o objeto que estou serializando.
Namespaces usados:
using System.Xml; using System.Xml.Serialization;
Código:
XmlSerializerNamespaces emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlSerializer serializer = new XmlSerializer(typeof(ticket)); XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; using (XmlWriter xmlWriter = XmlWriter.Create(fullPathFileName, settings)) { serializer.Serialize(xmlWriter, ticket, emptyNamespaces); }
fonte