【问题标题】:OSB: Assign a value from $header to variable in error handlerOSB:将 $header 中的值分配给错误处理程序中的变量
【发布时间】:2015-10-22 10:03:54
【问题描述】:

亲爱的 Stackoverflowers,

这是我的第一篇文章,所以我尽量做正确的事情。

在 OSB 组件的错误处理程序中,我需要将现有 $originalHeader 中的值分配给另一个变量以重用它,而无需将值作为文本输入。

在赋值动作中,表达式$originalHeader/privateMetaAttributesHeader/LoggingCategory 对于变量 originalLoggingCategory 确实返回以下内容:

Debugging_VariablesScreen

我不明白为什么 LoggingCategory 的值没有分配给变量 originalLoggingCategory。请帮我解决这个问题。

$originalHeader 的内容:

<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><v1:privateMetaAttributesHeader xmlns:v1="http://www.example.org/scintilla/meta/v1"><SwingMonitoring>...</SwingMonitoring><LoggingCategory>com.schenker.scintilla.AirOcean.WWTAN.LoadPlanInstructionService.v1</LoggingCategory></v1:privateMetaAttributesHeader></soapenv:Header>

提前致谢。 帕特里克

【问题讨论】:

  • Assign xpath 是 $originalHeader//LoggingCategory 你有什么运气吗? XML 的根元素与您的变量名同义……所以 $originalHeader = privateMetaAttributesHeader。 (...这也意味着在您的请求中您已经完成了 ASSIGN $originalHeader=$header/privateMetaAttributesHeader。)
  • 另外,您的屏幕截图与您粘贴为 $originalHeader 的内容不匹配
  • @Jonathan,是的,我将 $header 分配到 $originalHeader 中,因为它会在两者之间的某处被覆盖。我能够在适当的元素“privateMetaAttributesHeader”处使用正确/定义的命名空间“v1”来解决它。

标签: variables header variable-assignment assign osb


【解决方案1】:

&lt;privateMetaAttributesHeader&gt;&lt;v1:privateMetaAttributesHeader&gt; 之间存在差异,OSB 正确尊重这一点。

例如

  • $originalHeader/privateMetaAttributesHeader/LoggingCategory 可能为空
  • $originalHeader/v1:privateMetaAttributesHeader/v1:LoggingCategory 可能会返回您想要的内容(首先尝试仅选择标头,然后逐步进入日志记录类别,以防 LoggingCategory 不在 v1 命名空间中)

您可以在 OSB 代理阶段定义命名空间“v1”,或者如果您不知道,可以使用$originalHeader/*:privateMetaAttributesHeader/*:LoggingCategory,但不建议这样做。

【讨论】:

  • 嗨特伦特,非常感谢您的帮助!我已经有了这个想法,但我不知道我所指的命名空间是未知的。所以我在命名空间定义选项卡中用 URL 定义了一个新的。 $originalHeader/v1:privateMetaAttributesHeader/LoggingCategory/text() 成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
相关资源
最近更新 更多