XmlStarlet xmlからcsvに出力される内容は「NaNNaNNaN」です。

XmlStarlet xmlからcsvに出力される内容は「NaNNaNNaN」です。

クエリを作成しましたが、xmlstarlet sel -T -t -m badges/row -v "concat(@row, ',')" -n Badges.xml出力は次のように繰り返されます。

NaNNaNNaN...

Badges.xmlファイルの可能な行数。私はこれに従います:https://www.joyofdata.de/blog/transforming-xml-document-into-csv-using-xmlstarlet/xml形式のデータをCSVに変換します。何が起こっているのか理解している人はいますか?

ここに画像の説明を入力してください。

編集、以下はXMLファイルのいくつかのサンプルラインです。

<?xml version="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" />

答え1

XPATHの@属性名を指します。各ノードの属性値に基づいてcsvレコードを生成するには、<row>次の方法を使用します。

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

出力:

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

関連情報