Cole o C# à esquerda e clique em "Converter" — transformamos em XMLCole código C#

O que esta ferramenta faz

Se você já teve que montar um payload XML na mão espelhando uma classe C# — para uma chamada SOAP, um arquivo de config, um contrato WCF ou uma fixture de teste — sabe o quanto é boilerplate. Cole o C# aqui e você recebe XML bem formado numa passada só. Um único object initializer, um arquivo de model inteiro com várias classes ou algo profundamente aninhado — o resultado é o mesmo: um documento XML completo com todas as propriedades preservadas.

Não é só substituição boba de string. O conversor sabe como o C# realmente serializa para XML: sufixos decimal como 49.99m perdem o m, DateTime e DateTimeOffset saem como strings ISO-8601, Guid vira uma string hex padrão 8-4-4-4-12, nullables com valor null viram elementos vazios, e coleções seguem a mesma forma que o XmlSerializer geraria — cada List<T> vira um elemento container com um filho por item, com o nome do tipo do elemento.

Atributos de serialização também são respeitados. [XmlRoot("x")] renomeia o elemento raiz, [XmlElement("x")] renomeia um filho, [XmlAttribute("x")] emite a propriedade como atributo em vez de elemento, e [XmlIgnore] descarta. [DataMember(Name="x")] em classes DataContract funciona do mesmo jeito. Se você colar várias classes, cada uma aparece na saída com os tipos aninhados expandidos e propriedades herdadas incluídas. Nada some silenciosamente.

Como usar

Três passos. Funciona igual, seja com cinco linhas ou um arquivo de model inteiro.

1

Cole seu C# (ou teste o exemplo)

Jogue o C# no editor da esquerda, do jeito que está. Um object initializer, uma definição de classe completa, várias classes ou tipos aninhados — tudo funciona. Clique em Load Sample se quiser ver um exemplo realista primeiro.

Você não precisa tirar comentários, remover atributos nem limpar a sintaxe C#. Deixe o código do jeito que aparece na sua IDE. Só cole.

2

Clique em Converter

Clique no botão verde Convert. A ferramenta lê o C#, preserva cada classe e propriedade e monta o XML numa passada só. Aparece um indicador de carregamento rápido enquanto roda.

3

Copie o XML

O painel da direita é preenchido com XML indentado e bem formado que qualquer parser XML que siga o padrão vai aceitar. Copie direto para sua requisição SOAP, arquivo de config, fixture de teste ou documentação.

Quando isso realmente ajuda

Montar fixtures SOAP / WCF

Você tem um contrato de request em C# e precisa de um body XML para jogar no SoapUI ou no Postman. Cole a classe, pega o XML e segue a vida.

Começar arquivos de configuração

Uma classe Settings com 40 propriedades vira um template XML pronto para editar, para app.config, web.config ou qualquer store de config baseado em XML — sem boilerplate feito à mão.

Manter a documentação em dia

Gere exemplos de XML para um README, referência de API ou documentação de schema baseada em XSD direto dos seus models reais, para que a documentação bata com o código.

Popular dados de teste

Transforme object initializers dos seus testes unitários em arquivos XML de seed para testes de integração, mock servers ou sistemas legados que ainda falam XML.

Perguntas frequentes

Posso colar várias classes de uma vez?

Sim — cole um arquivo inteiro. Cada classe de nível raiz sai com os tipos aninhados expandidos e propriedades herdadas das classes base incluídas. Nada é descartado.

Respeita atributos como [XmlElement], [XmlAttribute] e [XmlIgnore]?

Sim. [XmlRoot("x")] renomeia o elemento raiz, [XmlElement("x")] renomeia um filho, [XmlAttribute("x")] emite a propriedade como atributo do pai, e [XmlIgnore] descarta totalmente. [DataMember(Name="x")] em classes DataContract também renomeia o elemento. É o mesmo que o XmlSerializer faria.

Como ele trata decimal, DateTime, Guid e nullables?

Decimais (49.99m) perdem o sufixo e viram texto numérico puro. DateTime e DateTimeOffset saem como strings ISO-8601. Guid é uma string hex padrão 8-4-4-4-12. TimeSpan vira uma duração ISO-8601 ou HH:mm:ss. Nullables com valor null viram elementos vazios em vez de serem descartados — assim a estrutura fica consistente.

E classes aninhadas, listas e dicionários?

List<T>, arrays, HashSet<T> e IEnumerable<T> viram elementos containers com um filho por item, com o nome do tipo do elemento — um List<OrderItem> Items vira <Items><OrderItem/><OrderItem/></Items>. Dictionary<K,V> vira um container de <Entry><Key/><Value/></Entry>. Object initializers aninhados são expandidos como elementos aninhados com cada campo intacto.

Meu código fica armazenado?

Seu código é enviado para o backend para a conversão e não fica persistido — não logamos o payload. Como sempre vale para ferramentas online, se o código for realmente sensível, dê uma olhada antes de colar.

E se o C# tiver alguma coisa esquisita — métodos, delegates, IntPtr?

Essas coisas saem como elementos vazios em vez de quebrar a conversão inteira, então o resto do seu model continua passando. Se o código tiver erro de sintaxe, resolve os mais óbvios primeiro — o parser é tolerante, mas não faz milagre.

Outras ferramentas que podem ajudar

C# para XML é só uma peça do quebra-cabeça. Essas aqui combinam bem: