【问题标题】:Base64 encoding in 12C BPEL is replacing the parent tag by the BPEL variable name12C BPEL 中的 Base64 编码正在用 BPEL 变量名替换父标记
【发布时间】:2020-05-13 11:25:51
【问题描述】:

我正在尝试通过首先将请求 XML 存储在 BPEL 变量中来对请求 XML 进行 base64 编码。 您能否看看问题并建议我做错了什么以及如何解决?

例如当我解码编码的消息时,我得到的输出为

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

而不是

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

base64代码如下-

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();
}

亲切的问候, 贾欣德

【问题讨论】:

    标签: base64 bpel encoder-decoder bpelxexec


    【解决方案1】:

    问题不在于 base64 编码,而在于变量的类型。 该变量是 anySimpleType 类型,但是当它更改为 XML 元素的类型时,问题就解决了。

    -Jaihind

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多