XmlStarlet xml para saída csv como 'NaNNaNNaN'

1

Eu escrevi uma consulta xmlstarlet sel -T -t -m badges/row -v "concat(@row, ',')" -n Badges.xml e a saída é repetida como:

NaNNaNNaN...

para o que provavelmente é a quantidade de linhas no arquivo Badges.xml. Estou seguindo este tut: link para transformar os dados formatados em xml para CSV. Alguém entende o que está acontecendo aqui?

Editar,aquiestãoalgumaslinhasdeamostradoarquivoXML:

<?xmlversion="1.0" encoding="utf-8"?>
<badges>
 <row Id="1" UserId="1" Name="Autobiographer" Date="2016-08-02T15:56:07.133" 
  Class="3" TagBased="False" />
 <row Id="2" UserId="8" Name="Autobiographer" Date="2016-08-02T15:56:07.133" 
  Class="3" TagBased="False" />
 <row Id="3" UserId="9" Name="Autobiographer" Date="2016-08-02T15:56:07.133" 
  Class="3" TagBased="False" />
 <row Id="4" UserId="19" Name="Autobiographer" Date="2016-08-
  02T15:56:07.133" Class="3" TagBased="False" />
 <row Id="5" UserId="27" Name="Autobiographer" Date="2016-08-
  02T15:56:07.133" Class="3" TagBased="False" />
    
por Greg Iven 19.03.2018 / 20:16

1 resposta

1

Em XPATH @ aponta para um nome de atributo. Para gerar registros csv com base nos valores dos atributos de cada nó <row> , use a seguinte abordagem:

xmlstarlet sel -T -t -m 'badges/row' -v \
'concat(@Id, ",", @UserId, ",", @Name, ",", translate(@Date," ",""), 
",", @Class, ",", @TagBased)' -n Badges.xml

A saída:

1,1,Autobiographer,2016-08-02T15:56:07.133,3,False
2,8,Autobiographer,2016-08-02T15:56:07.133,3,False
3,9,Autobiographer,2016-08-02T15:56:07.133,3,False
4,19,Autobiographer,2016-08-02T15:56:07.133,3,False
5,27,Autobiographer,2016-08-02T15:56:07.133,3,False
    
por 19.03.2018 / 21:18