我正在使用camel制作一个程序。该程序应该能够接收文件夹inbox_xml_files中的XML文件。
然后,程序应该获取XML文件内元素节点的文本值。
如果文本值是“Denmark”,则将文件移动到名为“outbox_Denmark”的文件夹中。
如果文本值是“Sweden”,则将文件移动到名为“outbox_Sweden”的文件夹中。
如果文本值是其他内容,则将文件移动到名为“outbox_Other”的文件夹中。
这是我用于测试的XML文件:
骆驼 XML 文件(这是我困扰的一个):
然后,程序应该获取XML文件内元素节点的文本值。
如果文本值是“Denmark”,则将文件移动到名为“outbox_Denmark”的文件夹中。
如果文本值是“Sweden”,则将文件移动到名为“outbox_Sweden”的文件夹中。
如果文本值是其他内容,则将文件移动到名为“outbox_Other”的文件夹中。
这是我用于测试的XML文件:
<?xml version="1.0"?>
<Company>
<Employee>
<FirstName>Mike</FirstName>
<LastName>James</LastName>
<ContactNo>1234567890</ContactNo>
<Email>oy@hotmail.com</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>标签内。我觉得我定义错误了,尽管我正在努力解决,但这对我来说是新的东西,所以我很困难。
//Company/Employee/Address/Country[.='丹麦']
。 - SomeDude//Company/.../text() = 'Denmark'
也可以,例如使用 text() 指示 xml 节点中的文本。无论如何,这是标准的 xpath,所以去搜索一些例子吧。 - Claus Ibsen