我已經以這種方式格式化XML數據:XMLStarlet:打印每項一行,同時使用數據從父元素
<XML>
<Waveforms Time="01/01/2009 3:00:02 AM">
<WaveformData Channel="I">1, 2, 3, 4, 5, 6 </WaveformData>
<WaveformData Channel="II">9, 8, 7, 6, 5, 4 </WaveformData>
</Waveforms>
<Waveforms Time="01/01/2009 3:00:04 AM">
<WaveformData Channel="I">1, 2, 3, 4, 5, 6 </WaveformData>
<WaveformData Channel="II">9, 8, 7, 6, 5, 4 </WaveformData>
</Waveforms>
</XML>
我試圖用xmlstarlet這個數據解析到一個文本文件(逗號分隔)。所需的輸出應該是這樣的:
Time Attribute, Channel Attribute, Data
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6
01/01/2009 3:00:02 AM, II, 9, 8, 7, 6, 5, 4
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6
01/01/2009 3:00:02 AM, II, 9, 8, 7, 6, 5, 4
我能想出的最好的是:
xmlstarlet sel -T -t -m //XML/Waveforms -v @Time -o "," -m Waves -v WaveformData/@Channel -o "," -v WaveformData -o "," -b -n testwave2.xml > testwave.txt
其中給出這樣的結果:
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6, II, 9, 8, 7, 6, 5, 4
01/01/2009 3:00:04 AM, I, 1, 2, 3, 4, 5, 6, II, 9, 8, 7, 6, 5, 4
很清楚如何打印每波形一行,但不包括如何從每個WaveformData打印一行,如果我想從其父項中包含time屬性。這可以做到嗎?或者,我應該在周圍工作並做一些切片和粘貼以便在後端修復它?
在這個問題上和測試數據所提出的命令行在這個問題上不要實際上一起工作。也許被忽略的'波浪'有錯? –
...此刻,我擔心我生成的任何答案都不會對您的*實際*數據起作用。 –
看來我粘貼了我用來生成上面輸出的代碼。我認爲唯一的區別是-m波被移除,但是直到明天才能夠檢查。真正的問題是如何花時間解析每組波形數據。 –