将xml文件转换成csv格式唱骆驼?

时间:2012-09-04 08:41:14

标签: java apache-camel

我想使用camel将.xml文件创建到csv文件中。这是我的代码

 CamelContext context = new DefaultCamelContext();
from("file://Input?fileName=test.xml").marshal().csv().to("file://test?fileName=test.csv");
 context.start();

但是它没有在所需的文件夹中创建任何文件" test"。

2 个答案:

答案 0 :(得分:5)

请花一点时间在Camel文档上,尝试一下示例,并阅读常见问题解答。和介绍文章等等。

上面的代码甚至没有效果,因为您需要将它放在RouteBuilder中。

另外,当您启动CamelContext时,请阅读start方法的javadoc。阅读此常见问题解答 http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

Camel还提供了一个跟踪器,因此您可以在处理消息时看到消息流。跟踪器将在INFO级别将此默认日志记录到记录器。 http://camel.apache.org/tracer

答案 1 :(得分:3)

以下是使用驼峰的示例

<camelContext xmlns="http://camel.apache.org/schema/spring">
    <route>
      <from uri="file:src/xmldata?noop=true"/>
      <to   uri="xslt:file:src/main/fruits.xslt"/> 
      <to   uri="file://TESTOUT?fileName=output.csv"/>
    </route>
  </camelContext>

src / xmldata文件夹中的示例xml文件

<AllFruits xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- All fruits below. -->
<Fruit>
  <FruitId>Bannana</FruitId>
  <FruitColor>Yellow</FruitColor>
  <FruitShape>Moon</FruitShape>
  <Customer>
     <Name>Joe</Name>
     <NumberEaten>5</NumberEaten>
     <Weight>2.6</Weight>
  </Customer>
  <Customer>
     <Name>Mark</Name>
     <NumberEaten>8</NumberEaten>
     <Weight>5.0</Weight>
  </Customer>
</Fruit>
</AllFruits>

<强>的src /主/ fruits.xslt

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:output method="text" encoding="ISO-8859-1" />
    <xsl:variable name="newline" select="'&#xA;'"/>
    <xsl:template match="Fruit">
        <xsl:for-each select="Customer">
            <xsl:value-of select="preceding-sibling::FruitId" />
            <xsl:text>,</xsl:text>
            <xsl:value-of select="NumberEaten" />
            <xsl:text>,</xsl:text>
            <xsl:value-of select="Weight" />
            <xsl:value-of select="$newline" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>