如何删除Soap响应消息的XML声明

2020-09-10 22:00发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的场景是从SOAP(轴)到Soap(XI)。 我想从响应消息中删除此部分。

 <?xml version =" 1.0" encoding =" UTF-8"?> 

这是我的带有XML声明的肥皂响应消息。

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
     
         
             
                 
                     <声明>
                          2019年3月29日
                          220.00 
                     
                 
             
         
     
  

我希望消息像这样。 它没有XML声明

 
     
         
             
                 
                     <声明>
                          2019年3月29日
                          220.00 
                     
                 
             
         
     
  

(26.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的场景是从SOAP(轴)到Soap(XI)。 我想从响应消息中删除此部分。

 <?xml version =" 1.0" encoding =" UTF-8"?> 

这是我的带有XML声明的肥皂响应消息。

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
     
         
             
                 
                     <声明>
                          2019年3月29日
                          220.00 
                     
                 
             
         
     
  

我希望消息像这样。 它没有XML声明

 
     
         
             
                 
                     <声明>
                          2019年3月29日
                          220.00 
                     
                 
             
         
     
  

(26.6 kB)
付费偷看设置
发送
8条回答
软件心理学工程师
1楼-- · 2020-09-10 22:15

嗨伊万,

您可以在响应映射中使用第二步Java映射

谢谢

Sugata

野沐沐
2楼-- · 2020-09-10 22:21

嗨,Sugata,

我用以下代码创建了Java映射程序。 没什么区别。 感谢有关使用Java代码的任何建议。 谢谢。

 @Override
  公共无效transform(TransformationInput arg0,TransformationOutput arg1)引发StreamTransformationException {
  //TODO自动生成的方法存根
   getTrace()。addDebugMessage("输入的转换方法");
   InputStream in = arg0.getInputPayload()。getInputStream();
   OutputStream输出= arg1.getOutputPayload()。getOutputStream();
   尝试{
    byte [] b =新的byte [in.available()];
    in.read(b);
    字符串要求=新的字符串(b);
    req = req.replaceAll(" <​​?xml version = \" 1.0 \" encoding = \" UTF-8 \"?>"," <?xml version = \" 1.0 \"?>"));
    req = req.replaceAll(" <​​?xml version = \" 1.0 \" encoding = \" ISO-8859-1 \"?>","");
    req = req.replaceAll(" <​​?xml version = \" 1.0 \"?>","");
    out.write(req.getBytes());
    out.flush();
   }
   捕获(IOException ioe){
    getTrace()。addWarning("执行Java转换时出错" + ioe.getMessage());
    抛出新的StreamTransformationException("执行Java转换时出错" + ioe.getMessage(),ioe);
   }
  }
 
梦想连接
3楼-- · 2020-09-10 22:33

嗨,伊凡!

您可以使用此简单的XSL转换作为第一步映射:

 <?xml version =" 1.0  " encoding =" UTF-8"?>
 
     
     
         
     
  

关于Evgeniy。

SAP小菜
4楼-- · 2020-09-10 22:29

嗨,Evgeniy

我在响应消息的操作映射中添加了带有XSLT映射的新(第一步)步骤。 我运行了soap call test,它显示XML声明行仍在响应消息中返回。 另外,我尝试将XLST程序移至最后一步,但这也没有任何区别。

风早神人
5楼-- · 2020-09-10 22:28

你好伊万,

尝试在PI独立模式下运行响应映射,并查看从映射创建的目标有效负载是否未添加XML声明。

如果映射中不存在该有效负载,您将看到它 测试时使用postman/soapui,这是因为该工具在漂亮打印模式下查看时再次添加了声明。

尝试以原始方式查看外部工具(soapui/postman)中的有效负载 或文本模式。

也尝试在Java代码中使用replace方法而不是replaceAll。

谢谢

Sugata

lukcy2020
6楼-- · 2020-09-10 22:16

是的,我使用了Postman和SoapUI。 我检查了Raw选项卡,并且两个都有XML声明行。

一周热门 更多>