Проблема декодирования Base64 в SAP PI
Я написал UDF для декодирования текста base64 конечного кода в сопоставлении sap pi. Но после декодирования тегов xml все открытые и закрытые теги заменяются на > <
Пожалуйста, найдите ниже скриншот кода.
public String Base64Decoder(String EncodedString, Container container) throws StreamTransformationException
{
//Variable to hold decoded string
String decodedString = null;
byte[] decodedBytes = DatatypeConverter.parseBase64Binary(EncodedString);
try{
//Convert base64 schema to byte array
return new String(decodedBytes,"UTF-8");
//Get the string of decoded byte array
}catch(Exception e) {
}
//Export decoded string
return decodedString;
}
Вывод после декодирования:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Log xmlns:ns0="http://world.com/pi/M/Log">
<Data><OUTPUT><item><VBELN>0180001027</VBELN><WADAT>00000000</WADAT><VSTEL>1000</VSTEL><KUNNR/><ITEM><YITEM><MATNR>000000000011000082</MATNR><LFIMG>1.0</LFIMG><MEINS>L</MEINS></YITEM></ITEM></item><item><VBELN>0180001233</VBELN><WADAT>00000000</WADAT><VSTEL>1000</VSTEL><KUNNR/><ITEM><YITEM><MATNR>000000000041000000</MATNR><LFIMG>10.0</LFIMG><MEINS>LM</MEINS></YITEM></ITEM></item></OUTPUT></Data>
</ns0:Log>
Данные внутри <Data>
тег - это декодированный текст. Но, как видите, все его теги заменены. Например, вместо <OUTPUT>
это печать <OUTPUT>
Пожалуйста, дайте мне знать, какие изменения я должен сделать в UDF, чтобы избежать этого.
Кодированная строка в Base64:
PE9VVFBVVD48aXRlbT48VkJFTE4+MDE4MDAwMTAyNzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDAxMTAwMDA4MjwvTUFUTlI+PExGSU1HPjEuMDwvTEZJTUc+PE1FSU5TPkw8L01FSU5TPjwvWUlURU0+PC9JVEVNPjwvaXRlbT48aXRlbT48VkJFTE4+MDE4MDAwMTIzMzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDA0MTAwMDAwMDwvTUFUTlI+PExGSU1HPjEwLjA8L0xGSU1HPjxNRUlOUz5MTTwvTUVJTlM+PC9ZSVRFTT48L0lURU0+PC9pdGVtPjwvT1VUUFVUPg==
1 ответ
Если вы говорите, что <Data><OUTPUT><...
неверно только потому, что вы видите <
вместо <
внутри строки XML, это просто недоразумение с вашей стороны.
В XML необработанный символ <
всегда представлен <
,