【问题标题】:Mule ESB: How to use xpath expression on session variable?Mule ESB:如何在会话变量上使用 xpath 表达式?
【发布时间】:2014-10-15 04:54:07
【问题描述】:

我需要从会话变量中提取一些信息。会话变量类型是字符串并且包含 XML。我尝试了 XPATH 表达式,例如 -

xpath('//tns:CreateUpdateRQ/tns:RequestInfo/sns:requestSourceID',sessionVars.originalMessage)

但是我收到异常声明“找不到转换器 NULL Payload to Document”。我试过 MEL,比如 - #[sessionVars.originalMessage.CreateUpdateRQ.RequestInfo.requestID]。但它也不起作用。

如何从保存 XML 的类型字符串的会话变量中提取信息。

附:我可以将有效负载设置为会话变量并使用 xpath,但这不适合我的情况,因为我需要从会话变量 7 中提取信息,并将其作为参数传递给 datamapper。

感谢您对此提供的帮助。

【问题讨论】:

    标签: xpath mule


    【解决方案1】:

    为了方便读取xml文件,我推荐将String(Object)转换成xml,例如:

    <xml:object-to-xml-transformer /> 
    

    然后

    <logger level="WARN" message="#[xpath://soapenv:Envelope/soapenv:Body//...]" />
    

    总之,确保payload是XML类型的,你可以通过设置

    <set-property propertyName="Content-Type" value="text/xml" />
    

    【讨论】:

    • 感谢您的回复。但是,我希望从会话变量(存储 XML 字符串)中提取信息。我尝试了多个选项,例如 -"#[xpath('//tns:CreateUpdateSchoolRQ/tns:requestInfo',sessionVars.originalSchoolMessage)]" & .text, .getText() 等,但没有工作。如果我将会话变量设置为有效负载并使用 xpath,我会得到正确的结果。但我想直接从会话变量中提取信息。
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2012-04-09
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多