Estoy usando XmlSerializer.Serialize, y produce saltos de línea y espacios innecesarios. ¿Cómo evitarlo?¿Cómo serializar un XML sin espacios innecesarios y saltos de línea? (.NET)
Respuesta
¿Quizás podría usar la sobrecarga aceptando un XmlWriter
, y configurar el XmlWriter
dado con una instancia XmlWriterSettings
?
XmlWriterSettings
le permite controlar la aplicación de saltos de línea y sangría.
void Serialize(Object o)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = false;
settings.NewLineHandling = NewLineHandling.None;
//settings.OtherProperties = values;
using (XmlWriter writer = XmlWriter.Create(CreateStream(), settings))
{
_serializer.Serialize(writer, o);
}
}
funcionó, gracias –
Tuve que cambiar los parámetros alrededor de esta manera: '_serializer.Serialize (writer, o);'. Gran solución, gracias! –
Es interesante, pensé que no había formateo por defecto. Acabo de intentar lo siguiente y llegué sin formato:
using (var stream = new MemoryStream())
{
System.Text.Encoding encoding;
using (var writer = XmlWriter.Create(stream))
{
if (writer == null)
{
throw new InvalidOperationException("writer is null");
}
encoding = writer.Settings.Encoding;
var ser = new XmlSerializer(obj.GetType());
ser.Serialize(writer, obj);
}
stream.Position = 0;
using (var reader = new StreamReader(stream, encoding, true))
{
return reader.ReadToEnd();
}
}
en una muestra de la ejecución, se devuelve el siguiente XML:
<?xml version="1.0" encoding="utf-8"?><obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><childOne /><childTwo /><text>text1</text><text>text2</text></obj>
Quizás le guste más =) –
Tal incoherencia se debe informar a Microsoft. Un método no puede comportarse de diferentes maneras. ¿Es dependiente de CultureInfo? ¿O es una .NET Version/Service Pack? No lo sé todavía –
Si tienes la oportunidad, ejecuta el código que publiqué. Estoy ejecutando .NET 3.5 SP1. Veamos cuál es la verdadera diferencia. –
favor, compruebe también si las clases serializados contienen miembros de tipo XML (como XmlElement) Usé la herramienta Xsd2Code para generar clases desde XSD y (en casos muy especiales) ha creado un miembro de tipo XmlElement. Durante la serialización, este miembro tenía su propio formato (identación para ser exacto). Incluso si he activado (o desactivado) la sangría de XmlSerializer, no ha afectado al miembro de XmlElement.
- 1. ¿Por qué el compilador de cierres de Google deja algunos espacios innecesarios o saltos de línea?
- 2. ¿Cómo serializar un objeto a XML sin obtener xmlns = "..."?
- 3. Elimina espacios en blanco y saltos de línea a partir de XML en Java
- 4. file_put_contents, file_append y saltos de línea
- 5. Cómo serializar este XML en .NET (matriz)
- 6. Serializar el objeto sin espacios de nombres utilizando DataContractSerializer
- 7. Eliminar espacios en blanco y saltos de línea al analizar con HtmlAgilityPack
- 8. Cómo XML-serializar un diccionario
- 9. ¿Cómo elimino todos los saltos de línea?
- 10. @SuppressWarnings innecesarios ("sin usar")
- 11. ¿Cómo se pueden tener saltos de línea en atributos XML?
- 12. iCal4j y saltos de línea
- 13. Cómo XML Serializar un 'Tipo'
- 14. La lectura de un archivo sin saltos de línea
- 15. ¿Cómo ignorar saltos de línea?
- 16. Ruby - saltos de línea y los operadores
- 17. Groovy editar archivo XML, guardar comentarios, saltos de línea
- 18. Agregar saltos de línea en un archivo XML grande en una línea
- 19. serializar un objeto .net y omitir el doctype?
- 20. Cómo XML serializar variedad polimórfica sin envolver elemento
- 21. ¿Por qué los espacios adicionales y los saltos de línea en las consultas son malos?
- 22. saltos de línea y el ajuste ReSharper
- 23. ¿Cómo evito los saltos de línea entre un botón de opción y su etiqueta, al tiempo que dejo los saltos de línea dentro de la etiqueta?
- 24. JAXB: ¿Cómo se puede deserializar XML sin espacios de nombres
- 25. Serializar objeto .Net a json, controlado mediante atributos xml
- 26. XML Serializar objeto dinámico
- 27. serialización XML, sin espacios en blanco
- 28. Regex eliminar saltos de línea
- 29. cómo quitar los retornos de carro, saltos de línea, espacios de una cadena
- 30. serializar clase a XML?
Viejo, pero creo que la diferencia es si está usando un XmlWriter o un TextWriter. En mi experiencia, XmlWriter no tiene formato por defecto. Esto tiene sentido, porque sabe que está escribiendo un documento donde el formato no importa, mientras que un escritor de texto está escribiendo texto directo. – Timothy