Groovy脚本将xml文件中的xml元素和值转换为名称值对

2020-08-21 13:04发布

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

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


您好专家:需要有关Groovy脚本的帮助,以将传入的xml数据转换为名称值对,请参考以下示例。

输入XML有效载荷

 
  1234 
 
 <角色> 1 
 
 
 

必需的输出XML有效载荷

 
 <名称> Acct.AcctNumber 
  1234 
 <名称> Acct.AcctRole.Role 
 <值> 1 
 
 

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

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


您好专家:需要有关Groovy脚本的帮助,以将传入的xml数据转换为名称值对,请参考以下示例。

输入XML有效载荷

 
  1234 
 
 <角色> 1 
 
 
 

必需的输出XML有效载荷

 
 <名称> Acct.AcctNumber 
  1234 
 <名称> Acct.AcctRole.Role 
 <值> 1 
 
 
付费偷看设置
发送
6条回答
CJones
1楼 · 2020-08-21 13:26.采纳回答

嗨,Manish

您是否正在寻找一个将特定示例输入映射到特定示例输出的脚本,因此问题尚不清楚。 但是,那将是一件非常简单的事情,所以我假设您的想法更加笼统。

(通过 general ,我的意思是无论

我想到了以下XSLT样式表:

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

给出您的输入,它将产生以下输出:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <组>
     <名称> Acct.AcctNumber 
      1234 
     <名称> Acct.AcctRole.Role 
     <值> 1 
  

以下是一些替代输入,并添加了一个更高的级别:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
      1234 
     
         <角色> 1 
         <子角色>
             <角色> B 
         
     
 

 

鉴于此,样式表将生成以下输出:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <组>
     <名称> Acct.AcctNumber 
      1234 
     <名称> Acct.AcctRole.Role 
     <值> 1 
     <名称> Acct.AcctRole.Subroles.Role 
      B 
  

当然,这不是Groovy,但我很满意,无论:-D

玩得开心,

Morten

空代码
2楼-- · 2020-08-21 13:24

嗨,Manish

您是说可以在各种输入文档中使用的通用的东西,还是从显示的特定输入转换为显示的特定输出的东西?

致谢

莫尔滕

骆驼绵羊
3楼-- · 2020-08-21 13:35

感谢莫尔滕,这正是我一直在寻找的东西,感谢您的大力帮助。

d56caomao
4楼-- · 2020-08-21 13:28

嗨,Morten,

对于创建键值对并尝试使用相同的XSLT代码,我们也有类似的要求。

请参考以下链接以获取更多详细信息。

https://answers.sap。 com/questions/13014587/xslt-mapping-issue-in-sap-cpi.html

在此用例之上,我们要求仅过滤所需的SalesParties并跳过其他各方。

还需要为来自SalesParty节点下的所有字段附加来自Sales Party的RoleCodeText。

您能帮我如何在当前的xsl代码之上实现目标?

此致

Devaraj

Nan4612
5楼-- · 2020-08-21 13:15

感谢 Morten Wittrock ,这是我们的最后一件 注意,要确保字段名称在名称值对组合中始终是唯一的。 对于多出现节点的情况,是否可以添加一些计数器以使字段名称唯一?

示例:

合作伙伴集合将具有多个合作伙伴的数据,并且数据将包含具有相同字段名称的多行以及具有重复值的重复字段名称的现有逻辑,这将破坏目标系统,因为它期望使用唯一的字段名称。 如果您有任何建议,请告诉我。

  SalesQuoteCollection.SalesQuote.SalesQuoteParty.SalesQuoteParty.RoleCode  
空代码
6楼-- · 2020-08-21 13:18

Manish嗨

我建议您可以解决这个问题。 这样一来,您还可以更好地理解样式表,这只会是一件好事。

如果-经过努力,您仍然找不到解决方案,请发布新问题,包括最新内容 版本,并记得添加一些输入和预期输出示例。

关于

Morten

一周热门 更多>