Como formatar um arquivo XML com longa lista de atributos?

Como formatar um arquivo XML com longa lista de atributos?

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

Existe algum programa (linha de comando, Windows ou GNU/Linux) que suporta a reformatação de 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 uma saída semelhante a:

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

Responder1

Embora sua busca bem-intencionada por uma "ferramenta de linha de comando" seja perfeitamente correta, infelizmente acho que qualquer solução verdadeiramente viável para esse problema envolverá escrever algum código você mesmo ou, pelo menos, aproveitar o código existente (como um analisador XML/ gerador). Nos comentários, postei algumas coisas que você pode tentar e que podem ou não fornecer o estilo de formatação exato que você está procurando. Se estiver muito próximo, mas não exatamente, 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 impasse.

Estou chamando todas essas soluções de "possíveis" porque, mesmo que formatem os atributos da maneira que você deseja, elas podem formatar algooutrode certa forma vocênãoquer, e então você está de volta à estaca zero. Como você não declarou todos os seus requisitos de transformação, só posso adivinhar quais deles seriam aceitáveis ​​para você, então você terá que experimentá-los um por um até encontrar algo que funcione ou criá-lo você mesmo aproveitando o código existente e escrevendo um programa pequeno.

Possíveis soluções 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á é fornecida na íntegra na resposta do SO)

Possíveis soluções com programação

  • Escreva seu próprio programa personalizado usando um dos seguintes:
  • Xerces
  • Dom4j
  • Saxofone
  • libxml
  • As bibliotecas subjacentes que o Eclipse usa para analisar XML, o que provavelmente permitiria formatar XML programaticamente e configurar as regras de formatação personalizadas, como você vê nas opções do Eclipse

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

Veja tambémesseEntão pergunta.

Por último, observe que se você quiser ajuda da comunidade para mergulhar de cabeça na escrita de um programa envolvendo uma dessas tecnologias, você deve fazer a pergunta específica paraumanalisador/gerador/biblioteca XML escolhido emStackOverflowenãono Superusuário. Lidamos principalmente com questões sobre o uso de programas existentes aqui.

informação relacionada