我試圖通過使用駱駝來製作一個程序。該程序應該能夠在名爲inbox_xml_files的文件夾中接收xml文件。Apache Camel - 從XML獲取xpath值
然後,程序應該在xml文件中獲取< Country>元素節點的文本值。
如果文本值爲「丹麥」,則文件應移至名爲「outbox_Denmark」的文件夾。
如果文本值是「瑞典」,則應將文件移至名爲「outbox_Sweden」的文件夾。
如果文本值是別的東西,文件應該移動到名爲「outbox_Other」的文件夾。
這是我用於測試的XML文件:
<?xml version="1.0"?>
<Company>
<Employee>
<FirstName>Mike</FirstName>
<LastName>James</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
<Address>
<Country>Denmark</Country>
<City>Copenhagen</City>
<Zip>1234</Zip>
</Address>
</Employee>
</Company>
駱駝xml文件(在一個我煩惱的):
<camelContext id="camelId" xmlns="http://camel.apache.org/schema/spring">
<camel:route id="_route1">
<camel:from id="_from1" uri="file:C:/inbox_xml_files?noop=false"/>
<camel:choice id="_choice1">
<camel:when id="_when1">
<camel:xpath>
//Company/Employee/Address/Country = 'Denmark'
</camel:xpath>
<camel:to id="_to1" uri="file:C:/outbox_Denmark"/>
</camel:when>
<camel:when id="_when2">
<camel:xpath>
//Company/Employee/Address/Country = 'Sweden'
</camel:xpath>
<camel:to id="_to2" uri="file:C:/outbox_Sweden"/>
</camel:when>
<camel:otherwise id="_otherwise1">
<camel:to id="_to3" uri="file:C:/outbox_Other"/>
</camel:otherwise>
</camel:choice>
</camel:route>
</camelContext>
我相信這個問題是裏面的< camel:xpath>。我想我已經明確了它的錯誤,我正在嘗試,但所有這些對我來說都是新東西,所以我一直在努力。
我不認爲你需要//公司,嘗試/公司 –
更改XPath來'//公司/員工/地址/國家[。='丹麥']' – SomeDude
是或是/ //公司/.../text()='丹麥'也不起作用,例如使用text()來指示xml節點中的文本。不管怎樣,它的標準xpath都會在網上搜索一些例子 –