Кодировка Base64 в 12C BPEL заменяет родительский тег на имя переменной BPEL.

Я пытаюсь кодировать запрос XML в формате base64, сначала сохраняя его в переменной BPEL. Не могли бы вы взглянуть на проблему и подсказать, что я сделал не так и как это можно исправить?

например, когда я декодирую закодированное сообщение, я получаю вывод как

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

С уважением, Джейхинд

1 ответ

Проблема заключалась не в кодировке base64, а в типе переменной. Переменная имела тип anySimpleType, но когда она была изменена на тип элемента XML, проблема была решена.

-Джай Хинд

Другие вопросы по тегам