[代码]比较XML文件差异[cl_proxy_ui_utils=>show_xml_diff]

SAP类 cl_proxy_ui_utils中提供了一个方法show_xml_diff,可以比较两个XML文件的差异点,并以不同颜色显示两个xml的差异之处。

<img class="alignnone size-full wp-image-4240" src="http://www.baidusap.com/wp-content/uploads/2017-03-24_13-30-38.png" alt="" width="786" height="437" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-24_13-30-38.png 786w, http://www.baidusap.com/wp-content/uploads/2017-03-24_13-30-38-740x411.png 740w, http://www.baidusap.com/wp-content/uploads/2017-03-24_13-30-38-768x427.png 768w" sizes="(max-width: 786px) 100vw, 786px" />

代码:

其中可以通过SCMS_BINARY_TO_XSTRING,将xml转换成xstring,实际上最后比较的就是这个xstring

REPORT ztest_compare_xml.

DATA: lv_original TYPE xstring,
      lv_changed  TYPE xstring.

* get xml
PERFORM frm_get_file_binary USING 'C:\temp\1.xml'
                            CHANGING lv_original.
PERFORM frm_get_file_binary USING 'C:\temp\2.xml'
                            CHANGING lv_changed .

* compare xml
CALL METHOD cl_proxy_ui_utils=>show_xml_diff
  EXPORTING
    doc1 = lv_original
    doc2 = lv_changed.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_FILE_BINARY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0014   text
*      <--P_LV_ORIGINAL  text
*----------------------------------------------------------------------*
FORM frm_get_file_binary  USING    i_path
                          CHANGING c_xml.

  CONSTANTS c_linelen TYPE i VALUE 255.
  DATA: wa_data(c_linelen) TYPE x,
        it_data            LIKE TABLE OF wa_data,
        converter          TYPE REF TO cl_abap_conv_in_ce,
        lv_xstring         TYPE xstring,
        lv_length          TYPE i.

  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = i_path
      filetype                = 'BIN'
    IMPORTING
      filelength              = lv_length
    CHANGING
      data_tab                = it_data
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
      input_length = lv_length
    IMPORTING
      buffer       = lv_xstring
    TABLES
      binary_tab   = it_data
    EXCEPTIONS
      failed       = 1
      OTHERS       = 2.
  IF sy-subrc  <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  c_xml = lv_xstring.

ENDFORM.

显示结果:

&amp;lt;img class="alignnone size-full wp-image-4241" src="http://www.baidusap.com/wp-content/uploads/2017-03-24_13-31-40.png" alt="" width="523" height="353" /&amp;gt;

以上。

转载于:https://www.cnblogs.com/datie/p/11434611.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值