ABAP将XML解析为内表

背景

     最近在弄Fiori 的新闻磁贴,然后了解了一下新闻磁贴的原理(RSS),其中RSS常用是XML的格式,所以需要使用ABAP对RSS订阅进行解析后然后odata(或者restful)输出

解析后的内表

在这里插入图片描述

demo code ABAP

  REPORT Y_PERSON_XML.
  DATA lv_url TYPE string VALUE 'https://blog.csdn.net/huanglin6/rss/list?spm=1001.2014.3001.5494'.
  DATA lo_http TYPE REF TO if_http_client.

  DATA:LV_RESULT_STRING TYPE STRING,
       E_DATA TYPE STRING.
  DATA TEXT     TYPE STRING.
  DATA LV_XSTRING   TYPE XSTRING.
  DATA XML_TABLE TYPE STANDARD TABLE OF SMUM_XMLTB.
  DATA RETURN    TYPE STANDARD TABLE OF BAPIRET2.

  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = lv_url
    IMPORTING
      client             = lo_http
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.
  IF sy-subrc = 0.
    CALL METHOD lo_http->send
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        http_invalid_timeout       = 4
        OTHERS                     = 5.
    IF sy-subrc <> 0.
*  Implement suitable error handling here
    ENDIF.
    CALL METHOD lo_http->receive
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        OTHERS                     = 4.
    IF sy-subrc = 0.

      LV_RESULT_STRING = LO_HTTP->RESPONSE->GET_CDATA( ).

      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          TEXT           = LV_RESULT_STRING
        IMPORTING
          BUFFER         = LV_XSTRING
       EXCEPTIONS
        FAILED         = 1
                .

      CALL FUNCTION 'SMUM_XML_PARSE'
        EXPORTING
          xml_input       = LV_XSTRING
        TABLES
          xml_table       = XML_TABLE
          return          = return
                .
      IF SY-SUBRC EQ 0.

      ENDIF.

    ENDIF.
  ENDIF.

其中

  1. HIER是层次结构(即xml文件的第N层),
  2. TYPE是当前结点的类型:A:属性,V是结点值,空:其他
posted @   linhuang  阅读(64)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示