Vim: Tornando o texto XML “bonito”

28

Existe uma maneira fácil dentro de vi para tornar seu texto XML "bonito"?

Por exemplo:

Eu quero isso ..

            <person>
  <name>Nick</name>
 <age>26</age>
         <gender>male</gender>
<occupation>doctor</occupation>
    </person>

para ser isso ...

<person>
    <name>Nick</name>
    <age>26</age>
    <gender>male</gender>
    <occupation>doctor</occupation>
</person>
    
por Rob Avery IV 24.01.2013 / 20:54

1 resposta

33

Eu tive mais sorte com isso:

:%!xmllint --format %

No entanto, é estrito em relação às suas tags, por isso, haverá erros se suas tags de abertura e fechamento não corresponderem. Ele também adiciona uma declaração XML no topo do seu arquivo, se você não tiver um também.

Esta página recomenda o seguinte, embora eu não consiga para trabalhar:

:set filetype=xml
:filetype indent on
gg=G

Eu testei e parece funcionar um pouco. Não perfeitamente, mas faz o trabalho.

Se isso não funcionar bem, você pode usar o minidom no Python para formatá-lo para você.

import xml.dom.minidom

xml = xml.dom.minidom.parse(filename)
formatted_xml = xml.toprettyxml()
    
por 24.01.2013 / 21:07