12C BPEL中的Base64编码是用BPEL变量名代替父标签

问题描述 投票:0回答:1

我正在尝试将一个请求XML先存储在BPEL变体中进行base64编码.你能不能看看这个问题,并建议我做错了什么,以及如何修复同样的问题?

例如:当我对编码后的消息进行解码时,我得到的输出为

<varName ns0="namespace">
</varName>

而不是

<ns0:input ns0="namespace">
</ns0:input>

基本64码如下

try{
    oracle.xml.parser.v2.XMLElement inputPayload = (oracle.xml.parser.v2.XMLElement)getVariableData("varName");
    oracle.xml.parser.v2.XMLDocument xmlPayload = inputPayload.getDocument();
    java.io.ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream();
    xmlPayload.print(outputStream);
    java.lang.String xml_output = outputStream.toString("UTF-8");
    xml_output =  xml_output.substring(12, xml_output.length()-14);
    java.lang.String xml_oneLine = xml_output.replaceAll("\\s*[\\r\\n]+\\s*", "").trim();
    xml_oneLine = xml_oneLine.replaceAll("(^\\h*)|(\\h*$)","").trim();
    java.lang.String xml_encoded = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +xml_oneLine;
    oracle.soa.common.util.Base64Encoder encoder = new oracle.soa.common.util.Base64Encoder();
    java.lang.String encodedString = null;
    encodedString = encoder.encode(xml_encoded.trim());
    setVariableData("outputVariableName", "requestVariableName", "XPath", encodedString);
    outputStream.close();
}

亲切的问候,Jaihind

base64 bpel encoder-decoder bpelxexec
1个回答
0
投票

这个问题不是base64编码的问题,而是变量类型的问题,这个变量的类型是anySimpleType,但是当它被改成XML元素的类型时,问题就解决了。

-Jaihind

© www.soinside.com 2019 - 2024. All rights reserved.