gpt4 book ai didi

xpath - WSO2 XPATH 总是返回 null

转载 作者:行者123 更新时间:2023-12-03 16:05:38 25 4
gpt4 key购买 nike

这是我的问题。我从具有事件触发器到 ESB 的 DS 接收以下 xml。

<messageCollection xmlns="http://services.core.solution.com/ds/queue">
<message>
<messageid>3083e5b9-f8fd-426f-a017-42439f47eefc</messageid>
<messagetypeid>1</messagetypeid>
<message>''</message>
<processed>false</processed>
<createddate>2014-12-30T14:38:11.782-04:00</createddate>
<modifieddate>2014-12-30T14:38:11.782-04:00</modifieddate>
<count>7</count>
</message>
<message>
<messageid>2283e5b9-f8fd-426f-a017-42439f47eefc</messageid>
<messagetypeid>2</messagetypeid>
<message>''</message>
<processed>false</processed>
<createddate>2014-12-30T14:38:11.782-04:00</createddate>
<modifieddate>2014-12-30T14:38:11.782-04:00</modifieddate>
<count>7</count>
</message>
</messageCollection>

并在有效负载调解中我实现了这一点:
<payloadFactory media-type="xml">
<format>
<p:updateLastPollingControl xmlns:p="http://services.core.solution.com/ds/queue">
<xs:lastpolling xmlns:xs="http://services.core.solution.com/ds/queue">$1</xs:lastpolling>
</p:updateLastPollingControl>
</format>
<args>
<arg evaluator="xml" expression="//ns:message[last()]/ns:createddate" /> </args>
</payloadFactory>

为什么它总是返回空值。如果我对日期进行编码,一切正常。

在绝望的举动中,我还尝试了:
> //ns:message[last()]/ns:createddate/text() 
> /*/ns:message[last()]/ns:createddate
> //ns:message[last()]/createddate
> /*/message[last()]/createddate

但似乎没有任何效果。

有任何想法吗?谢谢

最佳答案

(免责声明:我不熟悉 WSO2,只熟悉 XML/XPath。)

在我看来,您的问题是由于 XML 输入中的默认命名空间:

<messageCollection xmlns="http://services.core.solution.com/ds/queue">

此默认命名空间不仅适用于 messageCollection元素,但也包括它的所有后代,包括 message元素。此外,即使在命名空间中, message 的元素名称仍然是“消息”,而不是“ns:消息”。

此外,我看不到您在哪里声明或注册命名空间 http://services.core.solution.com/ds/queue ,即将它与前缀 ns: 相关联.如果不这样做,则前缀和命名空间之间没有联系。

要检验这个假设,请尝试
//*:message[last()]/*:createddate


//*[local-name() = 'message'][last()]/*[local-name() = 'createddate']

并让我知道这些表达式是否返回任何内容。

上面的表达式并没有真正考虑命名空间,而是忽略了它们。处理命名空间的正确方法是声明它们。根据 this page ,也许注册这个命名空间的正确方法是
<args>
<arg evaluator="xml" expression="//ns:message[last()]/ns:createddate" xmlns:ns="http://services.core.solution.com/ds/queue"/>
</args>

关于xpath - WSO2 XPATH 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27714594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com