1

我编写了一个 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>&lt;OUTPUT&gt;&lt;item&gt;&lt;VBELN&gt;0180001027&lt;/VBELN&gt;&lt;WADAT&gt;00000000&lt;/WADAT&gt;&lt;VSTEL&gt;1000&lt;/VSTEL&gt;&lt;KUNNR/&gt;&lt;ITEM&gt;&lt;YITEM&gt;&lt;MATNR&gt;000000000011000082&lt;/MATNR&gt;&lt;LFIMG&gt;1.0&lt;/LFIMG&gt;&lt;MEINS&gt;L&lt;/MEINS&gt;&lt;/YITEM&gt;&lt;/ITEM&gt;&lt;/item&gt;&lt;item&gt;&lt;VBELN&gt;0180001233&lt;/VBELN&gt;&lt;WADAT&gt;00000000&lt;/WADAT&gt;&lt;VSTEL&gt;1000&lt;/VSTEL&gt;&lt;KUNNR/&gt;&lt;ITEM&gt;&lt;YITEM&gt;&lt;MATNR&gt;000000000041000000&lt;/MATNR&gt;&lt;LFIMG&gt;10.0&lt;/LFIMG&gt;&lt;MEINS&gt;LM&lt;/MEINS&gt;&lt;/YITEM&gt;&lt;/ITEM&gt;&lt;/item&gt;&lt;/OUTPUT&gt;</Data>
</ns0:Log>

标签内的数据<Data>是解码的文本。但正如你所看到的,它的所有标签都被替换了。例如,而不是<OUTPUT>打印&lt;OUTPUT&gt;

您能否让我知道我应该在 UDF 中进行哪些更改以避免这种情况。

Base64 编码字符串:

PE9VVFBVVD48aXRlbT48VkJFTE4+MDE4MDAwMTAyNzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDAxMTAwMDA4MjwvTUFUTlI+PExGSU1HPjEuMDwvTEZJTUc+PE1FSU5TPkw8L01FSU5TPjwvWUlURU0+PC9JVEVNPjwvaXRlbT48aXRlbT48VkJFTE4+MDE4MDAwMTIzMzwvVkJFTE4+PFdBREFUPjAwMDAwMDAwPC9XQURBVD48VlNURUw+MTAwMDwvVlNURUw+PEtVTk5SLz48SVRFTT48WUlURU0+PE1BVE5SPjAwMDAwMDAwMDA0MTAwMDAwMDwvTUFUTlI+PExGSU1HPjEwLjA8L0xGSU1HPjxNRUlOUz5MTTwvTUVJTlM+PC9ZSVRFTT48L0lURU0+PC9pdGVtPjwvT1VUUFVUPg==
4

1 回答 1

0

如果您说这<Data>&lt;OUTPUT&gt;&lt;...是不正确的只是因为您看到 &lt;而不是<在 XML 字符串内部,那么这只是您的误解。

在 XML 中,原始字符<始终表示为&lt;

于 2019-08-01T06:44:53.913 回答