【问题标题】:Spring Integration xpath expression Multiple Condition CheckSpring集成xpath表达式多条件检查
【发布时间】:2017-03-23 02:57:24
【问题描述】:

我有一个想要过滤的 SAP IDOC,但我卡在一个地方。

这是一个示例 XML

    <E1EDK14 SEGMENT="1">
        <QUALF>007</QUALF>
        <ORGID>10</ORGID>
    </E1EDK14>
    <E1EDK14 SEGMENT="1">
        <QUALF>008</QUALF>
        <ORGID>BP01</ORGID>
    </E1EDK14>
    <E1EDK14 SEGMENT="1">
        <QUALF>012</QUALF>
        <ORGID>ZMOR</ORGID>
    </E1EDK14>

条件是这样的

如果 QUALF = 12 且 ORGID = ZOR 则处理 else 忽略

我的代码是这样的

<int-xml:xpath-router id="splitORGID" input-channel="ORDERS" evaluate-as-string="true" resolution-required="false" default-output-channel="ORDER-TYPE-NOT-SUPPORTED">
    <int-xml:xpath-expression id="splitORGIDExpression" expression="//E1EDK14/ORGID" />
    <int-xml:mapping value="ZOR" channel="ALLOW_ORDERS" />
</int-xml:xpath-router>

我想知道这是否正确。

【问题讨论】:

  • 我对 Spring 集成一无所知,但 XPath 表达式选择 E1EDK14 元素,其中子 QUALF = 12 和 ORGID = ZMOR 将是://E1EDK14[QUALF=12 and ORGID='ZMOR']
  • 嗨,谢谢您的回答。我基本上是 XPATH 的新手,所以从表达式 //EIEDK14[QUALF=12] 并不意味着采用 QUALF 属性而不是子节点。所以这将类似于 /
  • 没有。在 XPath 中使用 @ 引用属性,例如 //E1EDK14[@SEGMENT=1]
  • 您好抱歉延迟回复所以它现在终于可以工作了。

标签: spring xpath spring-integration


【解决方案1】:

这是我想出的解决方案,效果很好

<int-xml:xpath-router id="splitORGID" input-channel="CUSTORDERS" evaluate-as-string="true" resolution-required="false" default-output-channel="ORDERTYPE-NOTSUPPORTED-KTOKD">
    <int-xml:xpath-expression id="splitORGIDExpression" expression="//E1EDK14[QUALF=012]/ORGID" />
    <int-xml:mapping value="ZOR" channel="ORDERS" />
    <int-xml:mapping value="ZSCO" channel="ORDERS" />
    <int-xml:mapping value="ZMOR" channel="HISTORICALORDERS" />
</int-xml:xpath-router>

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多