WSO2 Mediator解析平面数据?

时间:2014-12-19 12:05:38

标签: wso2 wso2esb

我遇到的情况是我必须解析CDATA部分中的平面数据,该部分涉及复杂的业务逻辑并生成可以发送到另一个服务的XML请求。由于生成XML涉及复杂的业务逻辑,涉及解析平面文件,我不认为我可以使用现有的WSO2调解器,如XSLT等。我觉得班级调解员可以使用。有什么建议吗?

输入: 2 019019
5 A4L01G0
5 $ P200033450
56- A2A08
5- A2A14
5- A2A16
16-A2G01
10& - A2G02
7723- A2J04
5- A2K023
5- A2K03
767312365- A2P01
5- A2R12313107
512313- A2S02
6F01
6F02
36127316F03
6F04
900000000021]

预期产量: 比如说,

<RequestMessage> 
    <element1>1</element1>
    <element>Data</DCTLibraryName>
    <dummyy>PosinaManualLibraryCSet1</dummy>

    <DCTIDs>
        <elelemt10 attrib=" Base" attrib1="eweew" attrib2="GRR_D_PACK" Name="lib"/>
        <elelemt11 attrib ="Base" attrib1="10665" attrib2="temp" Name="lib"/>
>
</RequestMessage>

2 个答案:

答案 0 :(得分:0)

我建议使用XSLT中介。它具有丰富的功能来读取CDATA部分并从中计算xml .XSLT是位成本,但如果你的负载不高,你可以使用XSLT。如果您使用类中介,则必须实现所有逻辑..

答案 1 :(得分:0)

如果您对Java更满意,可以实现自定义中介。

//some idea - this code never got tested in a real setup
public class MyCustomMediator extends AbstractMediator {
    public boolean mediate(MessageContext context) {
        //omitted any safety checks / exception handling 
        SynapseLog synLog = getLog(context);
        //adapt to your message
        OMElement element = (OMElement) context.getEnvelope().getBody()
                    .getFirstOMChild();
        BufferedReader reader = new BufferedReader(new StringReader(
                    element.getText()));
        // your custom logic in here

        //return the result of your custom logic
        element.setText(result.toString());

        return true;
   }
}