我试图通过使用骆驼来制作一个程序。该程序应该能够在名为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都会在网上搜索一些例子 –