ABAP怎么解析和生成XML

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

ABAP怎么解析和生成XML-第1张图片-佛山资讯网

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(<child>).</child>,再用 <child>->get_name( )</child><child>->get_text( )</child> 取值
  • 取属性:DATA attr TYPE string. attr = <child>->get_attribute( 'id' ).</child>

用 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 等。

标签: 编码

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~