在shell脚本中将xml文件转换为csv?

时间:2013-01-16 21:38:39

标签: xml linux shell csv

我正在尝试将xml文件转换为csv文件。我有一个像这样的输入xml文件:

<Row>
  <Cell>
    <Data Type="String" >START</Data>
  </Cell>
  <Cell>
    <Data Type="DateTime" >2013-01-15T21:30:42</Data>
  </Cell>
  <Cell>
    <Data Type="String" ></Data>
  </Cell>
  <Cell>
    <Data Type="String" >Start 'suite8'</Data>
  </Cell>
  <Cell>
    <Data Type="String" >Test 'suite8' started</Data>
  </Cell>
  <Cell>
    <Data Type="String" ></Data>
  </Cell>
</Row>
<Row/>
<Row>
  <Cell>
    <Data Type="String" >START_TEST_CASE</Data>
  </Cell>
  <Cell>
    <Data Type="DateTime" >2013-01-15T21:30:42</Data>
  </Cell>
  <Cell>
    <Data Type="String" ></Data>
  </Cell>
  <Cell>
    <Data Type="String" >Start 'case1'</Data>
  </Cell>
  <Cell>
    <Data Type="String" >Test Case 'case1' started</Data>
  </Cell>
  <Cell>
    <Data Type="String" >case1</Data>
  </Cell>
</Row>

我对标记<Data Type="String" ></Data>之间的位感兴趣。此外,当标记<Row>出现时,应启动新行。

我想要的输出csv文件应如下所示:

START,2013-01-15T21:30:42,,Test 'suite8' started 

START_TEST_CASE,2013-01-15T21:30:42,,Start 'case1',Test Case 'case1' started,case1

我希望这很清楚,非常感谢任何帮助:)谢谢!

2 个答案:

答案 0 :(得分:2)

查看xslt样式表和xsltproc命令。如果它只是无条件地将所有数据转换为带有逗号分隔值的行,则它是一个相对简单的样式表。

快速搜索产生了这样的结果:XML to CSV Using XSLT 通过对xml进行一些调整,它可以满足您的需求。

答案 1 :(得分:0)

在此之前已经解决了使用Bash解析XML的问题:

How to parse XML in Bash?

那说这似乎是一种痛苦的生活方式。

相关问题