使用XSLT根据条件从XML删除节点

2020-09-12 07:51发布

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

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


你好

我有一个看起来像下面的XML

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    <数据行>
       <行>
           User1 
          
              1000 
              EUR 
          
       
       <行>
           User2 
          <段02>
              11 
             <区域> AA 
          
       
       <行>
           User3 
       
       <行>
           User4 
       
       <行>
           User5 
          
              100 
              EUR 
          
          <段02>
              11 
             <区域> AA 
          
       
    
  

要求是删除所有没有Segment01或Segment02实例的行节点。 因此,根据上面的示例,预期输出需要为

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    <数据行>
       <行>
           User1 
          
              1000 
              EUR 
          
       
       <行>
           User2 
          <段02>
              11 
             <区域> AA 
          
       
       <行>
           User5 
          
              100 
              EUR 
          
          <段02>
              11 
             <区域> AA 
          
       
    
  

有关如何使用XSLT映射实现此目标的任何意见?

我检查了这个示例,但是它谈到了从消息中删除空节点

https://archive.sap.com/discussions/thread/3243372

谢谢!

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

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


你好

我有一个看起来像下面的XML

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    <数据行>
       <行>
           User1 
          
              1000 
              EUR 
          
       
       <行>
           User2 
          <段02>
              11 
             <区域> AA 
          
       
       <行>
           User3 
       
       <行>
           User4 
       
       <行>
           User5 
          
              100 
              EUR 
          
          <段02>
              11 
             <区域> AA 
          
       
    
  

要求是删除所有没有Segment01或Segment02实例的行节点。 因此,根据上面的示例,预期输出需要为

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    <数据行>
       <行>
           User1 
          
              1000 
              EUR 
          
       
       <行>
           User2 
          <段02>
              11 
             <区域> AA 
          
       
       <行>
           User5 
          
              100 
              EUR 
          
          <段02>
              11 
             <区域> AA 
          
       
    
  

有关如何使用XSLT映射实现此目标的任何意见?

我检查了这个示例,但是它谈到了从消息中删除空节点

https://archive.sap.com/discussions/thread/3243372

谢谢!

付费偷看设置
发送
2条回答
lukcy2020
1楼 · 2020-09-12 08:31.采纳回答

嗨Abhishek

这是XSLT解决方案:

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

     

     
         
             <数据行>
                 
             
         
     
    
     
         
             
         
     

 
 

最后一个模板复制任何元素,并且xsl:apply-templates指令确保仅将其应用于具有Segment01或Segment02子元素的Row元素。

Morten

DafaDDDa
2楼-- · 2020-09-12 08:27

Hello Abhishek,

下面应该考虑到DataRow的出现是一个。

1) 具有以下条件的内容过滤器

/MT_SCN_TEST/DataRow/Row [Segment02或Segment01] 

2)添加内容修饰符以恢复原始结构。

 <  MT_SCN_TEST>
    <数据行>
       $ {in.body}
  
 
 

致谢

Sriprasad Shivaram Bhat

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答