【问题标题】:How to convert positional data into xml data in wso2 esb如何将位置数据转换为 wso2 esb 中的 xml 数据
【发布时间】:2023-11-21 22:03:02
【问题描述】:

我尝试使用 smooks 中介,但没有成功。

任何人都可以提供指导或任何代码 sn-p 以将位置转换为 wso2 esb 中的 xml 数据。

位置数据:

126164142984982549250 dsadqdsadssfsds 6312654555 456620533 631412478147941949 158465110552332222022 gerjgrengegnsrw 2587566256 785964212 258769651436652365 265784295331333223333 fjkwfweufmnwfvn 6582654257 875662223 698263674123651236

示例预期的 xml 输出:

<root>
    <input>
        <firtstname></firtstname> (postions 1-20)
        <lastname></lastname>     (postions 21-27)
        <age></age>               (postions 28-35)
        <dob></dob>               (postions 36-46)
    </input>
</root>

【问题讨论】:

    标签: xml wso2 esb smooks


    【解决方案1】:

    WSO2 ESB 不支持开箱即用的位置数据。为了将位置数据转换为 SOAP 格式,您需要编写一个自定义消息构建器。当消息到达 WSO2 ESB 时,它需要按照 Axis2 引擎的要求构建为 SOAP 消息。但是,这需要根据消息的内容类型来完成。

    我相信位置数据以文本/纯文本形式传入 ESB。在这种情况下,您需要覆盖现有的默认 text/plain Builder 并使用您自己的实现。

    要编写您自己的自定义 Builder,您需要从 MessageFormatter [1] 扩展您的 Builder,类似于 [2]。

    要添加您的自定义生成器,请将以下内容添加到您的axis2.xml。

    <messageBuilder contentType="text/plain" class="<fully qualified path to Builder class>"/>
    

    您可以在 [3] 中找到有关构建器和格式化程序的更多信息。

    [1]https://github.com/wso2/wso2-axis2/blob/master/modules/kernel/src/org/apache/axis2/transport/MessageFormatter.java

    [2]https://github.com/wso2/wso2-axis2/blob/master/modules/transport/base/src/main/java/org/apache/axis2/format/PlainTextFormatter.java

    [3]https://docs.wso2.com/display/ESB490/Working+with+Message+Builders+and+Formatters

    【讨论】:

    • milyn.org/xsd/smooks-1.1.xsd" xmlns:fl="milyn.org/xsd/smooks/fixed-length-1.3.xsd">
    • 使用上述配置可以转换,但一个问题是它只允许 136 个字符.....如果我给出超过 136 个字符,它不会同时转换为 xml也抛出任何错误。