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 GENERATION 和 XML PARSING 声明式语法。选哪种取决于你的 ABAP 版本、性能要求和数据结构复杂度。
适合中小 XML、需要随机访问节点、兼容老系统(如 7.02 起可用)。
DATA doc TYPE REF TO cl_xml_document. doc = cl_xml_document=>create_document( ).
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>
内存友好,适合几百 MB 级 XML,不全载入内存,按事件(start tag / text / end tag)逐段处理。
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_xml_document 写起来更轻量、更可控,支持缩进、命名空间、CDATA 等。
本文档主要讲述的是使用JSON进行网络数据交换传输;JSON(JavaScript ObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON的数据格式非常简单,您可以用 JSON 传输一个简单的 St
0
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( ).
适合结构固定、映射清晰的场景,一行代码生成或解析,但灵活性较低。
DATA(xml) = |<root><item id="{ lv_id }">{ lv_text }</item></root>|.(字符串模板)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)、命名空间、特殊字符转义(& → &)这些细节。
以上就是ABAP怎么解析和生成XML的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号