Necesito obtener xml simple, sin el <?xml version="1.0" encoding="utf-16"?>
al principio y xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
en el primer elemento de XmlSerializer
. ¿Cómo puedo hacerlo?
c#
.net
xml-serialization
xml-declaration
Grzenio
fuente
fuente
using( writer )
, como se puede ver en esta pregunta: stackoverflow.com/a/11192524/2144408 .Use la
XmlSerializer.Serialize
sobrecarga de métodos donde puede especificar espacios de nombres personalizados y pasar esto.var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); serializer.Serialize(xmlWriter, objectToSerialze, emptyNs);
pasar una matriz nula o vacía no hará el truco
fuente
Puede usar XmlWriterSettings y establecer la propiedad OmitXmlDeclaration en true como se describe en msdn . Luego use XmlSerializer.Serialize (xmlWriter, objectToSerialize) como se describe aquí .
fuente
Esto escribirá el XML en un archivo en lugar de una cadena. El ticket de objeto es el objeto que estoy serializando.
Espacios de nombres utilizados:
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); }
fuente