Openclose标签被替换为><,而SAP PI中的base64解码。

问题描述 投票:1回答: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==
java base64 sap sap-xi sap-pi
1个回答
0
投票

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

在XML中,原始字符 < 总是代表 &lt;.

© www.soinside.com 2019 - 2024. All rights reserved.