Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
.NET 6 XmlSerializer Pretty print

I've this sample .NET 6 program printing out a serialised object to XML:

using System.Text;
using System.Xml.Serialization;

var serializer = new XmlSerializer(typeof(Order));

var order = new Order
{
    Address = new Address
    {
        FirstName = "Name"
    }
};

await using var memoryStream = new MemoryStream();
var streamWriter = new StreamWriter(memoryStream, Encoding.UTF8);
serializer.Serialize(streamWriter, order);

var result = Encoding.UTF8.GetString(memoryStream.ToArray());

Console.WriteLine(result);

public class Order
{
    public Address Address;
}

public class Address
{
    public string FirstName;
}

This results in this output:

<?xml version="1.0" encoding="utf-8"?><Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Address><FirstName>Name</FirstName></Address></Order>

In .NET 5 and .NET Core 3 similar code results in pretty printed XML like below. How can I format this XML in .NET6?

<?xml version="1.0" encoding="utf-8"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Address>
    <FirstName>Name</FirstName>
  </Address>
</Order>
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

To write indented xml you can use XmlTextWriter (instead of just StreamWriter) with Formatting set to Formatting.Indented:

await using var memoryStream = new MemoryStream();
XmlTextWriter streamWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
streamWriter.Formatting = Formatting.Indented;
serializer.Serialize(streamWriter, order);

var result = Encoding.UTF8.GetString(memoryStream.ToArray());

UPD

As @sveinungf wrote in the comment - using XmlWriter.Create is recommended approach, so the code can look like this (also note that create method can accept StringBuilder and file name also which can be more convenient in some scenarios):

await using var memoryStream = new MemoryStream();
var streamWriter = XmlWriter.Create(memoryStream, new()
{
    Encoding = Encoding.UTF8,
    Indent = true
});
serializer.Serialize(streamWriter, order);
var result = Encoding.UTF8.GetString(memoryStream.ToArray());
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda