Eu tenho uma string XML como tal:
<?xml version='1.0'?><response><error code='1'> Success</error></response>
Não há linhas entre um elemento e outro e, portanto, é muito difícil de ler. Eu quero uma função que formata a seqüência acima:
<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response>
Sem recorrer a escrever manualmente a função de formato, existe alguma biblioteca .Net ou trecho de código que eu possa usar de antemão?
c#
xml
formatting
Graviton
fonte
fonte
XmlDocument
qual desqualificaria a resposta mais votada nesta questão.Respostas:
Use
XmlTextWriter
...fonte
Você precisará analisar o conteúdo de alguma forma ... Acho que usar o LINQ é a maneira mais fácil de fazer isso. Novamente, tudo depende do seu cenário exato. Aqui está um exemplo de trabalho usando o LINQ para formatar uma string XML de entrada.
[instruções usando são omitidas por questões de brevidade]
fonte
doc.Declaration.ToString() + doc.ToString()
ou usando emdoc.Save
vez dedoc.ToString
. Veja este link para mais detalhes.Este, de kristopherjohnson, é muito melhor:
Menos linhas de código
fonte
<?xml version="1.0" encoding="UTF-8" ?>
linha na parte superior) e funcionou bem.A solução simples que está funcionando para mim:
fonte
Verifique o link a seguir:
Como imprimir XML de maneira bonita(Infelizmente, o link agora retorna 404 :()O método no link usa uma string XML como argumento e retorna uma string XML bem formada (recuada).
Acabei de copiar o código de exemplo do link para tornar essa resposta mais abrangente e conveniente.
fonte
<?xml...?>
linha. Esta resposta tem o que eu originalmente tinha em mente. O único aspecto negativo seria que eu preferiria tabulações em vez de espaços usados nativamente. ArmeiIndentation = 1
eIndentChar = '\t'
consegui exatamente o que queria.(this String XML)
funciona muito bem.Eu tentei:
está funcionando bem como esperado.
fonte
O .NET 2.0 ignora a resolução de nomes e com a disposição adequada de recursos, recuo, espaço em branco para preservar e codificação personalizada :
Uso:
fonte
se você carregar o XMLDoc, tenho certeza de que a função .ToString () possui uma sobrecarga para isso.
Mas isso é para depuração? O motivo pelo qual é enviado dessa maneira é ocupar menos espaço (ou seja, removendo o espaço em branco desnecessário do XML).
fonte
Saída Pretty XML personalizável com declaração XML UTF-8
A seguinte definição de classe fornece um método simples para converter uma sequência XML de entrada em XML de saída formatada com a declaração xml como UTF-8. Ele suporta todas as opções de configuração que a classe XmlWriterSettings oferece.
Possibilidades de melhorias adicionais: -
GetPrettyXml(XmlDocument doc, XmlWriterSettings settings)
pode ser criado para permitir que o chamador personalize a saída.GetPrettyXml(String rawXml)
pode ser adicionado para oferecer suporte à análise de texto bruto, em vez de o cliente usar o XmlDocument. No meu caso, eu precisava manipular o XML usando o XmlDocument, portanto, não o adicionei.Uso:
fonte