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

관련 정보