如何将 String 解析为 MbMessageAssembly?在Java计算节点IIB
How to parse String to MbMessageAssembly? In Java Compute node IIB
我对此很陌生,我正在为一个问题而苦苦挣扎。
在 Java Compute Node 中,通过 IIB,我正在检查一个字段是否具有一个或多个值,并且对于每个附加值,我正在创建一个新的重复消息,除了值,这些附加值将被覆盖。
正如预期的那样工作正常,请参见示例:
输入:...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>1111111;22222222;333333333</shipper_reference_hu></root>
修改后的消息 1:...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>1111111</shipper_reference_hu></root>
修改消息 2:..
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>22222222</shipper_reference_hu></root>
修改后的消息 3 :...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>333333333</shipper_reference_hu></root>
但我正在努力将此消息从 Java 计算节点传播出去。我知道我无法传播 String
类型的消息,因此我试图将其解析为 MbMessageAssemble
outAssemble。这是我的代码:
String newMessage = inData.replace(wholeValues, outData); // replace one value with another
MbMessage outMessage = new MbMessage();
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
copyMessageHeaders(inMessage, outMessage);
MbElement outRoot = outMessage.getRootElement();
MbElement outParser = outRoot.createElementAsLastChild(MbBLOB.PARSER_NAME);
MbElement outBodyEl2 = outParser.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", newMessage.getBytes());
alt.propagate(outAssembly);
但这是传播空消息,因此 newMessage
未解析为 outAssembly
。任何有这种经验的人都可以帮助我吗?
我明白了。为了未来,这里是你的答案
String newMessage = "this is some test";
MbMessage outMessage=new MbMessage();
outMessage.getRootElement().createElementAsLastChild(MbBLOB.PARSER_NAME).createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", newMessage.getBytes());
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
out.propagate(outAssembly);
我对此很陌生,我正在为一个问题而苦苦挣扎。 在 Java Compute Node 中,通过 IIB,我正在检查一个字段是否具有一个或多个值,并且对于每个附加值,我正在创建一个新的重复消息,除了值,这些附加值将被覆盖。 正如预期的那样工作正常,请参见示例:
输入:...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>1111111;22222222;333333333</shipper_reference_hu></root>
修改后的消息 1:...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>1111111</shipper_reference_hu></root>
修改消息 2:..
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>22222222</shipper_reference_hu></root>
修改后的消息 3 :...
</leg_flight_no><lineNumber>2</lineNumber><shipper_name>BMW AG</shipper_name> <shipper_reference_hu>333333333</shipper_reference_hu></root>
但我正在努力将此消息从 Java 计算节点传播出去。我知道我无法传播 String
类型的消息,因此我试图将其解析为 MbMessageAssemble
outAssemble。这是我的代码:
String newMessage = inData.replace(wholeValues, outData); // replace one value with another
MbMessage outMessage = new MbMessage();
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
copyMessageHeaders(inMessage, outMessage);
MbElement outRoot = outMessage.getRootElement();
MbElement outParser = outRoot.createElementAsLastChild(MbBLOB.PARSER_NAME);
MbElement outBodyEl2 = outParser.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", newMessage.getBytes());
alt.propagate(outAssembly);
但这是传播空消息,因此 newMessage
未解析为 outAssembly
。任何有这种经验的人都可以帮助我吗?
我明白了。为了未来,这里是你的答案
String newMessage = "this is some test";
MbMessage outMessage=new MbMessage();
outMessage.getRootElement().createElementAsLastChild(MbBLOB.PARSER_NAME).createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", newMessage.getBytes());
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
out.propagate(outAssembly);