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.
其中
- HIER是层次结构(即xml文件的第N层),
- TYPE是当前结点的类型:A:属性,V是结点值,空:其他
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?