无法从Apache骆驼路由XML配置到Java方法获取单引号

时间:2018-09-26 14:11:15

标签: java xml apache-camel

我正在使用XML配置定义Apache骆驼路线,我想在传递带有单引号的参数时调用方法:

<bean ref="cmdExecutor" method="execute('BatchQA.bat',
        './input/CamelCMDFile/QATestScripts/', 'Analytics,&apos;qa.user&apos;')"/>

execute方法如下:

public int execute(String bat, String dir, String arguments, Exchange exchange) {
    String[] args = arguments.split(",");
    result = ProcessUtils.cmdExecute(bat, dir, args);
    .....

我尝试使用&apos;, &#39; and &#x27;来获得所需的结果,但是都没有起作用。这些字符只是在arguments对象中被忽略,其余的字符串将像在我的Java函数中一样被接收。

应用@Screwtape解决方案后,我得到的论据是&apos;qa.user&apos;,而这并不是我的目标。

谢谢。 :)

1 个答案:

答案 0 :(得分:1)

我不确定骆驼对这些单引号字符串的处理方式,因为如果用引号引起来,似乎只是去除了撇号,以至于我期望会导致错误的选项似乎起作用了。

但是,我已经按照您的要求运行了它。您需要反转报价类型。 XML允许在属性中使用单引号和双引号,即使eclipse似乎没有将单引号的属性涂成彩色(但是此站点也可以)。

因此,当我使用

<camel:bean ref="testBean" method='test("BatchQA.bat",
    "./input/CamelCMDFile/QATestScripts/", "Analytics,&apos;qa.user&apos;")' />

我的测试bean确实会按您希望的那样分解字符串:

[WARN ]: beans.testBean - Analytics
[WARN ]: beans.testBean - 'qa.user'

尽管我不知道是否有可能使用单引号和双引号使像这样的字符串。希望您不需要。