Como formatar um arquivo XML com uma longa lista de atributos?

6

Atualmente, estou trabalhando com arquivos XML que contêm elementos com uma longa lista de atributos. Quando tento recuar todo o arquivo XML usando xmllint --format myfile.xml apenas os elementos são recuados, os atributos ainda permanecem em uma única linha.

Existe algum programa (linha de comando, Windows ou GNU / Linux) que suporte a reformatação do XML, incluindo os atributos?

Por exemplo, um XML como:

<root>
  <node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>

deve ter saída semelhante a:

<root>
  <node attribute1="some long attribute value"
        attribute2="some long attribute value"
        attribute3="..."/>
</root>
    
por blerontin 26.09.2012 / 15:25

1 resposta

3
Embora sua busca bem intencionada por uma "ferramenta de linha de comando" esteja perfeitamente bem, infelizmente acho que qualquer solução verdadeiramente viável para esse problema envolverá você mesmo escrever algum código, ou pelo menos aproveitar o código existente (como um Analisador / gerador de XML). Nos comentários, publiquei algumas coisas que você pode tentar que podem ou não obter o estilo de formatação exato que você está procurando. Se é realmente próximo, mas não é bem assim, sua melhor aposta é provavelmente editar o código-fonte do programa que "quase" chega lá. Claro, se você não conhece nenhuma linguagem de programação, isso pode ser um pouco de impasse.

Eu estou chamando todas essas soluções de "possíveis" porque, mesmo que elas formatem os atributos da maneira que você quer, elas podem formatar algo else de uma maneira que você não quer, e então você está de volta à estaca zero. Uma vez que você não declarou todos os seus requisitos de transformação, eu só posso adivinhar quais deles seriam aceitáveis para você, então você apenas terá que experimentá-los um por um até que você tropeça em algo que funcione, ou crie você mesmo aproveitando o código existente e escrevendo um programa pequeno.

Soluções possíveis sem programação

GUI

Linha de Comando

  • XMLTidy (última atualização em 2005; pode estar obsoleto)
  • Dom4j (incluído aqui porque a "programação" já é dada a você em sua totalidade no Então responda)

Soluções possíveis com programação

  • Escreva seu próprio programa personalizado usando um dos seguintes procedimentos:
  • Xerces
  • Dom4j
  • Sax
  • libxml
  • As bibliotecas subjacentes que o Eclipse usa para analisar XML, o que provavelmente permitiria que você formatasse XML de forma programática e configurasse as regras de formatação customizadas como você vê nas opções do Eclipse

... que processa o XML exatamente da maneira que você deseja.

Veja também esta pergunta.

Por último, note que se você quiser ajuda da comunidade sobre como se dedicar a escrever um programa envolvendo uma dessas tecnologias, você deve fazer a pergunta específica para um analisador / gerador / biblioteca XML escolhido StackOverflow e não no SuperUser. Nós lidamos principalmente com questões sobre o uso de programas existentes aqui.

    
por 26.09.2012 / 16:02