Quando eu tenho um arquivo XML como este:
<guests>
<guest>
<name>Adam</name>
<music>Silence</music>
<dish>Vegetables</dish>
<beverage>Water</beverage>
</guest>
<guest>
<name>Brutus</name>
<music>Verdi</music>
<dish>Meat</dish>
<beverage>Mulsum</beverage>
</guest>
</guests>
Já existe uma maneira elegante de formatar isso em uma tabela? Imagino assim:
cat myPartyGuests.xml | xmlToTable --lines "/guests/guest" --columns "name, beverage, dish"
que dá algo assim:
name beverage dish
Adam Water Vegetables
Brutus Mulsum Meat
Eu já sei que se eu pudesse colocar o XML em um formulário como este:
name;beverage;dish
Adam;Water;Vegetables
Brutus;Mulsum;Meat
...posso usar column -s\; -t
para obter exatamente a saída desejada, portanto, falta apenas a etapa "XML para CSV".
Uma solução seria usar transformações XSL usando folhas de estilo XSL .
Ou escreva um script Python simples:
Instale
untangle
compip3 install --user untangle
, torne o script executável e execute:Ou use
xmltodict
:Estou usando
untangle
ouxmltodict
em vez de bibliotecas XML integradas porque as acho mais fáceis de usar. Isso pode ser feito com qualquer outra linguagem de script, é claro.