全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ABAP怎么解析和生成XML

ABAP中解析和生成XML有四种方式:cl_xml_document(DOM式,适合中小XML)、cl_sxml_reader/writer(流式,内存友好)、7.4+声明式语法(简洁但灵活度低)及7.54+ XML GENERATION/PARSING语句;选择取决于版本、性能与结构复杂度。

ABAP 中解析和生成 XML 主要靠标准类 cl_xml_document(老式 DOM 方式)和更现代的 cl_sxml_string_writer / cl_sxml_reader(SXML 接口),还有基于 ABAP 7.4+ 的 XML GENERATIONXML PARSING 声明式语法。选哪种取决于你的 ABAP 版本、性能要求和数据结构复杂度。

用 cl_xml_document 解析 XML 字符串

适合中小 XML、需要随机访问节点、兼容老系统(如 7.02 起可用)。

  • 创建实例:DATA doc TYPE REF TO cl_xml_document. doc = cl_xml_document=>create_document( ).
  • 加载 XML:doc->parse_string( xml_string ). —— 若失败会抛 cx_xml_document 异常,记得捕获
  • 查根节点:DATA root TYPE REF TO if_xml_element. root ?= doc->get_root( ).
  • 遍历子节点:LOOP AT root->get_children( ) ASSIGNING FIELD-SYMBOL().,再用 ->get_name( )->get_text( ) 取值
  • 取属性:DATA attr TYPE string. attr = ->get_attribute( 'id' ).

用 cl_sxml_reader 流式解析大 XML(推荐)

内存友好,适合几百 MB 级 XML,不全载入内存,按事件(start tag / text / end tag)逐段处理。

  • 创建 reader:DATA reader TYPE REF TO if_sxml_reader. reader = cl_sxml_string_reader=>create( xml_string ).
  • 循环读取:WHILE reader->read( ) = if_sxml_reader~co_event_start_element.
  • 当前元素名:DATA name TYPE string. name = reader->get_name( ).
  • 如果是文本节点:IF reader->get_event_type( ) = if_sxml_reader~co_event_text. DATA text TYPE string. text = reader->get_text( ).
  • 跳过子树:reader->skip( ).(比如忽略某个不需要的深层节点)

用 cl_sxml_string_writer 生成 XML

比 cl_xml_document 写起来更轻量、更可控,支持缩进、命名空间、CDATA 等。

  • 创建 writer:DATA writer TYPE REF TO if_sxml_writer. writer = cl_sxml_string_writer=>create( ).
  • 写开始标签:writer->write_start_tag( 'order' ).
  • 写属性:writer->write_attribute( name = 'id' value = '123' ).
  • 写文本内容:writer->write_text( 'ABC' ).
  • 写结束标签:writer->write_end_tag( ).
  • 获取结果:DATA xml_out TYPE string. xml_out = writer->get_output( ).

ABAP 7.4+ 声明式 XML 处理(最简洁)

适合结构固定、映射清晰的场景,一行代码生成或解析,但灵活性较低。

  • 生成:DATA(xml) = |{ lv_text }|.(字符串模板)
  • 解析(需配合 XSLT 或自定义转换):常用 CALL TRANSFORMATION 配合 ID 或 SIMPLE 模式,例如:
    CALL TRANSFORMATION id SOURCE xml = xml_string RESULT data = ls_struct.(前提是定义好对应 structure 和 transformation)
  • 注意:XML GENERATION 语句(7.54+)可直接从 internal table 生成 XML:
    XML GENERATION OUTPUT INTO DATA(lv_xml) FROM lt_data AS 'items' ITEM AS 'item'.

基本上就这些。小 XML 用 cl_xml_document 最直观;大文件或性能敏感用 SXML Reader/Writer;新项目且结构规整,优先试试声明式语法。别忘了处理编码(UTF-8)、命名空间、特殊字符转义(& → &)这些细节。


# 编码  # String  # if  # while  # 命名空间  # xml  # 字符串  # 循环  # 数据结构  # 接口  # internal  # symbol  # 事件  # 字符串模板  # dom  # table  # 子树  # 流式  # 不需要  # 遍历  # 自定义  # 较低  # 再用  # 别忘了  # 四种 


相关文章: 如何在Windows环境下新建FTP站点并设置权限?  如何在阿里云虚拟主机上快速搭建个人网站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  MySQL查询结果复制到新表的方法(更新、插入)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  南京网站制作费用,南京远驱官方网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  html制作网站的步骤有哪些,iapp如何添加网页?  如何用腾讯建站主机快速创建免费网站?  如何通过建站之星自助学习解决操作问题?  Android自定义控件实现温度旋转按钮效果  香港服务器选型指南:免备案配置与高效建站方案解析  如何获取开源自助建站系统免费下载链接?  建站主机类型有哪些?如何正确选型  广州建站公司哪家好?十大优质服务商推荐  如何正确选择百度移动适配建站域名?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何通过虚拟主机快速完成网站搭建?  南平网站制作公司,2025年南平市事业单位报名时间?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何通过VPS建站无需域名直接访问?  如何快速搭建支持数据库操作的智能建站平台?  建站之星安装模板失败:服务器环境不兼容?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  清除minerd进程的简单方法  如何快速生成高效建站系统源代码?  *服务器网站为何频现安全漏洞?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何在阿里云购买域名并搭建网站?  如何撰写建站申请书?关键要点有哪些?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  广东专业制作网站有哪些,广东省能源集团有限公司官网?  兔展官网 在线制作,怎样制作微信请帖?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  智能起名网站制作软件有哪些,制作logo的软件?  建站之星如何实现五合一智能建站与营销推广?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  安云自助建站系统如何快速提升SEO排名?  实例解析angularjs的filter过滤器  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何在万网主机上快速搭建网站?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  学校建站服务器如何选型才能满足性能需求?  宝塔新建站点报错如何解决?  淘宝制作网站有哪些,淘宝网官网主页?  建站之星免费版是否永久可用? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。