You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by guitarcarver <se...@churchilllake.com> on 2011/08/05 20:42:09 UTC

xpath splitter returns last xml node

Hello,

I would like to send a set of temperature readings to a camel route using
multiple XML nodes.  And then split them into individual readings and deal
with them one at a time.  This is simplified, in the end I'll use messaging.

This is the route:

<route>
  <from uri="file://temps.xml" />
  <split>
    <xpath>/Thermometer</xpath>
    <to uri="file://Temperatures" />    
  </split>
</route>

Where temps.xml looks like this:

<?xml version="1.0" encoding="UTF-8" ?>
<Thermometer>
  <OneWireZoneName>hot water</OneWireZoneName>
  <address>10843F09000800C3</address>
  <OneWireType>DS18S20</OneWireType>
  <Value>115.812</Value>
</Thermometer>
<Thermometer>
  <OneWireZoneName>2nd floor heat</OneWireZoneName>
  <address>10AFA808000800E4</address>
  <OneWireType>DS18S20</OneWireType>
  <Value>85.1</Value>
</Thermometer>

The route produces a single file with the last reading (last 6 lines of
temp.xml).  I'd like it to produce 2 files, with one reading per file.  I
saw a similar posting called "XPath Splitter Problem" from April 22, 2010
which discussed this.  I have the same issue and I think I've followed the
advice.  I toyed with using a loop and changing the XPATH query to
/Temperatures[$CamelLoopIndex] but I think split is what I really want.

Why use XML?  I hope if I add a data field, the XML-based code will still
work whereas a CSV list might cause me positional data grief later.

How can I (in DSL) split my concatenated XML file into many single
thermometer files (hopefully without resorting to my own bean)?

Robbin
An old Fortran IV programmer, learning new tricks

--
View this message in context: http://camel.465427.n5.nabble.com/xpath-splitter-returns-last-xml-node-tp4670473p4670473.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: xpath splitter returns last xml node

Posted by Christian Müller <ch...@gmail.com>.
Hello Robbin!

In your route, the second splitted message overrides the first file. You
must set an unique file name per splittet message (with a custom bean or a
peace of script code) - between the xpath and to definition.

Best,
Christian

Sent from a mobile device
Am 05.08.2011 20:42 schrieb "guitarcarver" <se...@churchilllake.com>:
> Hello,
>
> I would like to send a set of temperature readings to a camel route using
> multiple XML nodes. And then split them into individual readings and deal
> with them one at a time. This is simplified, in the end I'll use
messaging.
>
> This is the route:
>
> <route>
> <from uri="file://temps.xml" />
> <split>
> <xpath>/Thermometer</xpath>
> <to uri="file://Temperatures" />
> </split>
> </route>
>
> Where temps.xml looks like this:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <Thermometer>
> <OneWireZoneName>hot water</OneWireZoneName>
> <address>10843F09000800C3</address>
> <OneWireType>DS18S20</OneWireType>
> <Value>115.812</Value>
> </Thermometer>
> <Thermometer>
> <OneWireZoneName>2nd floor heat</OneWireZoneName>
> <address>10AFA808000800E4</address>
> <OneWireType>DS18S20</OneWireType>
> <Value>85.1</Value>
> </Thermometer>
>
> The route produces a single file with the last reading (last 6 lines of
> temp.xml). I'd like it to produce 2 files, with one reading per file. I
> saw a similar posting called "XPath Splitter Problem" from April 22, 2010
> which discussed this. I have the same issue and I think I've followed the
> advice. I toyed with using a loop and changing the XPATH query to
> /Temperatures[$CamelLoopIndex] but I think split is what I really want.
>
> Why use XML? I hope if I add a data field, the XML-based code will still
> work whereas a CSV list might cause me positional data grief later.
>
> How can I (in DSL) split my concatenated XML file into many single
> thermometer files (hopefully without resorting to my own bean)?
>
> Robbin
> An old Fortran IV programmer, learning new tricks
>
> --
> View this message in context:
http://camel.465427.n5.nabble.com/xpath-splitter-returns-last-xml-node-tp4670473p4670473.html
> Sent from the Camel - Users mailing list archive at Nabble.com.