![](/img/trans.png)
[英]OutOfMemoryError while decoding and encoding Base64 String into Bitmap
[英]Open/close tags are replaced with > <while base64 decoding in SAP PI
我编写了一个 UDF 来解码 SAP PI 映射中的 endcode base64 文本。 但是在解码 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>
标签内的<Data>
是解码文本。 但是正如你所看到的,它的所有标签都被替换了。 例如,代替<OUTPUT>
正在打印<OUTPUT>
您能否让我知道我应该在 UDF 中做哪些更改来避免这种情况。
Base64 中的编码字符串:
PE9VVFBVVD48aXRlbT48VkJFTE4+MDE4MDAwMTAyNzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDAxMTAwMDA4MjwvTUFUTlI+PExGSU1HPjEuMDwvTEZJTUc+PE1FSU5TPkw8L01FSU5TPjwvWUlURU0+PC9JVEVNPjwvaXRlbT48aXRlbT48VkJFTE4+MDE4MDAwMTIzMzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDA0MTAwMDAwMDwvTUFUTlI+PExGSU1HPjEwLjA8L0xGSU1HPjxNRUlOUz5MTTwvTUVJTlM+PC9ZSVRFTT48L0lURU0+PC9pdGVtPjwvT1VUUFVUPg==
如果说<Data><OUTPUT><...
不正确,只是因为你看到<
而不是<
在 XML 字符串中,那么这只是您的误解。
在 XML 中,原始字符<
始终表示<
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.