Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于筛选传入XML文档的XPath表达式_Xpath_Mule - Fatal编程技术网

用于筛选传入XML文档的XPath表达式

用于筛选传入XML文档的XPath表达式,xpath,mule,Xpath,Mule,我正试图使用一种选择,根据XML文档的部分内容来引导它们。但由于我是mule的新手,我正在努力理解如何获取xpath表达式来解析传入消息 作为一名员工,我设置了以下流程: 每个选项的时间设置为 #[xpath('//foo/bar').text] == baz 及 分别 无论我似乎在尝试什么;它总是向客户提供以下响应: Execution of the expression "xpath('//foo/bar').text] == baz" failed. (org.mule.api.expr

我正试图使用一种选择,根据XML文档的部分内容来引导它们。但由于我是mule的新手,我正在努力理解如何获取xpath表达式来解析传入消息

作为一名员工,我设置了以下流程:

每个选项的时间设置为

#[xpath('//foo/bar').text] == baz

分别

无论我似乎在尝试什么;它总是向客户提供以下响应:

Execution of the expression "xpath('//foo/bar').text] == baz" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: ContentLengthInputStream
我需要先把输入转换成什么吗?如果是,那又怎样?或者我还应该做些什么来让这一切顺利进行? 编辑

检查日志后,错误似乎与相同。JAXB上下文的多个实例。我找到了两种方法来解决这个问题

一个是重构我们所有的代码,使之只有一个JAXB实例,这并不容易,也不可取,但它确实解决了这个问题

另一个是停止在EML中使用XPATH。相反,我创建了一个Java transformer,它手动使用Java文档生成器和XPATH对象来提取信息并将其放在注册表中。这也起了作用

注意,如果不命中多个JAXB上下文,我们就无法使用getPayloadAsString。不要问我为什么mule需要JAXB上下文来将输入流转换为字符串。因此,我们在流中放置了一个Bytearray to String transformer:

当包含多个JAXB上下文时,如果任何人都有在eml中使用xpath的好方法,那么请随意留下答案,MULE将展示如下示例:

<when expression="#[payload.getPurchaseType() == 'book']">

... 除此之外,还有许多其他排列。mule的输出似乎有误导性,日志显示了一些不同的东西。
<when expression="#[payload.getPurchaseType() == 'book']">
<when expression="#[xpath('//foo/bar').text == 'baz']">